create-noxion 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +2 -2
  2. package/dist/add.d.ts +13 -0
  3. package/dist/add.d.ts.map +1 -0
  4. package/dist/add.js +141 -0
  5. package/dist/add.js.map +1 -0
  6. package/dist/index.d.ts +4 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +195 -5
  9. package/dist/index.js.map +1 -1
  10. package/dist/scaffold.d.ts +9 -1
  11. package/dist/scaffold.d.ts.map +1 -1
  12. package/dist/scaffold.js +20 -3
  13. package/dist/scaffold.js.map +1 -1
  14. package/dist/templates/docs/.env +8 -0
  15. package/dist/templates/docs/.env.example +9 -0
  16. package/dist/templates/docs/app/[slug]/page.tsx +49 -0
  17. package/dist/templates/docs/app/api/notion-webhook/route.ts +12 -0
  18. package/dist/templates/docs/app/api/revalidate/route.ts +12 -0
  19. package/dist/templates/docs/app/globals.css +31 -0
  20. package/dist/templates/docs/app/layout.tsx +36 -0
  21. package/dist/templates/docs/app/not-found.tsx +38 -0
  22. package/dist/templates/docs/app/page.tsx +45 -0
  23. package/dist/templates/docs/app/robots.ts +7 -0
  24. package/dist/templates/docs/app/site-layout.tsx +28 -0
  25. package/dist/templates/docs/app/sitemap.ts +9 -0
  26. package/dist/templates/docs/app/tailwind.css +3 -0
  27. package/dist/templates/docs/app/theme-script.tsx +16 -0
  28. package/dist/templates/docs/lib/config.ts +24 -0
  29. package/dist/templates/docs/lib/notion.ts +48 -0
  30. package/dist/templates/docs/next.config.ts +26 -0
  31. package/dist/templates/docs/noxion.config.ts +23 -0
  32. package/dist/templates/docs/package.json +25 -0
  33. package/dist/templates/docs/tsconfig.json +19 -0
  34. package/dist/templates/full/.env +10 -0
  35. package/dist/templates/full/.env.example +11 -0
  36. package/dist/templates/full/app/[slug]/page.tsx +55 -0
  37. package/dist/templates/full/app/api/notion-webhook/route.ts +12 -0
  38. package/dist/templates/full/app/api/revalidate/route.ts +12 -0
  39. package/dist/templates/full/app/globals.css +31 -0
  40. package/dist/templates/full/app/home-content.tsx +59 -0
  41. package/dist/templates/full/app/layout.tsx +36 -0
  42. package/dist/templates/full/app/not-found.tsx +38 -0
  43. package/dist/templates/full/app/page.tsx +50 -0
  44. package/dist/templates/full/app/robots.ts +7 -0
  45. package/dist/templates/full/app/site-layout.tsx +32 -0
  46. package/dist/templates/full/app/sitemap.ts +9 -0
  47. package/dist/templates/full/app/tag/[tag]/page.tsx +66 -0
  48. package/dist/templates/full/app/tailwind.css +3 -0
  49. package/dist/templates/full/app/theme-script.tsx +16 -0
  50. package/dist/templates/full/lib/config.ts +24 -0
  51. package/dist/templates/full/lib/notion.ts +66 -0
  52. package/dist/templates/full/next.config.ts +26 -0
  53. package/dist/templates/full/noxion.config.ts +40 -0
  54. package/dist/templates/full/package.json +25 -0
  55. package/dist/templates/full/tsconfig.json +19 -0
  56. package/dist/templates/nextjs/.env.example +1 -0
  57. package/dist/templates/nextjs/app/api/notion-webhook/route.ts +12 -0
  58. package/dist/templates/nextjs/app/home-content.tsx +17 -26
  59. package/dist/templates/nextjs/app/layout.tsx +4 -3
  60. package/dist/templates/nextjs/app/page.tsx +3 -3
  61. package/dist/templates/nextjs/app/site-layout.tsx +28 -0
  62. package/dist/templates/nextjs/app/tag/[tag]/page.tsx +4 -4
  63. package/dist/templates/nextjs/app/tailwind.css +3 -0
  64. package/dist/templates/nextjs/lib/config.ts +1 -0
  65. package/dist/templates/nextjs/lib/notion.ts +5 -5
  66. package/dist/templates/nextjs/package.json +3 -3
  67. package/dist/templates/plugin/noxion-plugin.json +10 -0
  68. package/dist/templates/plugin/package.json +41 -0
  69. package/dist/templates/plugin/src/__tests__/plugin.test.ts +39 -0
  70. package/dist/templates/plugin/src/index.ts +20 -0
  71. package/dist/templates/plugin/tsconfig.json +20 -0
  72. package/dist/templates/portfolio/.env +8 -0
  73. package/dist/templates/portfolio/.env.example +9 -0
  74. package/dist/templates/portfolio/app/[slug]/page.tsx +48 -0
  75. package/dist/templates/portfolio/app/api/notion-webhook/route.ts +12 -0
  76. package/dist/templates/portfolio/app/api/revalidate/route.ts +12 -0
  77. package/dist/templates/portfolio/app/globals.css +31 -0
  78. package/dist/templates/portfolio/app/layout.tsx +36 -0
  79. package/dist/templates/portfolio/app/not-found.tsx +38 -0
  80. package/dist/templates/portfolio/app/page.tsx +70 -0
  81. package/dist/templates/portfolio/app/robots.ts +7 -0
  82. package/dist/templates/portfolio/app/site-layout.tsx +31 -0
  83. package/dist/templates/portfolio/app/sitemap.ts +9 -0
  84. package/dist/templates/portfolio/app/tailwind.css +3 -0
  85. package/dist/templates/portfolio/app/theme-script.tsx +16 -0
  86. package/dist/templates/portfolio/lib/config.ts +24 -0
  87. package/dist/templates/portfolio/lib/notion.ts +48 -0
  88. package/dist/templates/portfolio/next.config.ts +26 -0
  89. package/dist/templates/portfolio/noxion.config.ts +23 -0
  90. package/dist/templates/portfolio/package.json +25 -0
  91. package/dist/templates/portfolio/tsconfig.json +19 -0
  92. package/dist/templates/theme/package.json +42 -0
  93. package/dist/templates/theme/src/index.ts +41 -0
  94. package/dist/templates/theme/styles/theme.css +23 -0
  95. package/dist/templates/theme/tsconfig.json +20 -0
  96. package/package.json +1 -1
  97. package/dist/templates/nextjs/app/providers.tsx +0 -45
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # create-noxion
2
2
 
3
- CLI scaffolding tool for [Noxion](https://github.com/jiwonme/noxion) — a Notion-powered blog builder.
3
+ CLI scaffolding tool for [Noxion](https://github.com/jiwonme/noxion) — a Notion-powered website builder.
4
4
 
5
5
  ## Usage
6
6
 
@@ -10,7 +10,7 @@ bun create noxion my-blog
10
10
  npx create-noxion my-blog
11
11
  ```
12
12
 
13
- This scaffolds a complete Next.js blog project in seconds, pre-configured with:
13
+ This scaffolds a complete Next.js project in seconds (blog, docs, portfolio, or full), pre-configured with:
14
14
 
15
15
  - Next.js App Router
16
16
  - Notion as CMS (via `@noxion/core`)
package/dist/add.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export declare function addComponent(names: string[], options: {
2
+ theme?: string;
3
+ overwrite?: boolean;
4
+ outputDir?: string;
5
+ }): Promise<void>;
6
+ export declare function listComponents(options: {
7
+ theme?: string;
8
+ }): Promise<void>;
9
+ export declare function diffComponent(name: string, options: {
10
+ theme?: string;
11
+ outputDir?: string;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"AA0EA,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B/E;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
package/dist/add.js ADDED
@@ -0,0 +1,141 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join, dirname } from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ import { execSync } from "node:child_process";
5
+ function resolveRegistryPath(theme) {
6
+ const candidates = [
7
+ join(process.cwd(), "node_modules", `@noxion/theme-${theme}`, "src", "registry.json"),
8
+ join(process.cwd(), "node_modules", `@noxion/theme-${theme}`, "registry.json"),
9
+ join(dirname(new URL(import.meta.url).pathname), "..", "..", `theme-${theme}`, "src", "registry.json"),
10
+ ];
11
+ for (const candidate of candidates) {
12
+ if (existsSync(candidate))
13
+ return candidate;
14
+ }
15
+ throw new Error(`Registry not found for theme "${theme}". Make sure @noxion/theme-${theme} is installed.`);
16
+ }
17
+ function resolveThemeSourceDir(theme) {
18
+ const candidates = [
19
+ join(process.cwd(), "node_modules", `@noxion/theme-${theme}`, "src"),
20
+ join(dirname(new URL(import.meta.url).pathname), "..", "..", `theme-${theme}`, "src"),
21
+ ];
22
+ for (const candidate of candidates) {
23
+ if (existsSync(candidate))
24
+ return candidate;
25
+ }
26
+ throw new Error(`Theme source not found for "${theme}".`);
27
+ }
28
+ async function loadRegistry(theme) {
29
+ const registryPath = resolveRegistryPath(theme);
30
+ const content = await readFile(registryPath, "utf-8");
31
+ return JSON.parse(content);
32
+ }
33
+ function getAllEntries(registry) {
34
+ return {
35
+ ...registry.components,
36
+ ...registry.layouts,
37
+ ...registry.templates,
38
+ };
39
+ }
40
+ function resolveDependencies(name, all, visited = new Set()) {
41
+ if (visited.has(name))
42
+ return [];
43
+ visited.add(name);
44
+ const entry = all[name];
45
+ if (!entry)
46
+ return [];
47
+ const deps = [];
48
+ for (const dep of entry.dependencies) {
49
+ deps.push(...resolveDependencies(dep, all, visited));
50
+ if (!deps.includes(dep))
51
+ deps.push(dep);
52
+ }
53
+ return deps;
54
+ }
55
+ export async function addComponent(names, options) {
56
+ const theme = options.theme ?? "default";
57
+ const outputDir = options.outputDir ?? join(process.cwd(), "src", "components", "noxion");
58
+ const overwrite = options.overwrite ?? false;
59
+ const registry = await loadRegistry(theme);
60
+ const all = getAllEntries(registry);
61
+ const sourceDir = resolveThemeSourceDir(theme);
62
+ const toInstall = new Set();
63
+ for (const name of names) {
64
+ if (!all[name]) {
65
+ console.error(`Component "${name}" not found in @noxion/theme-${theme} registry.`);
66
+ console.error(`Run "noxion list --from=${theme}" to see available components.`);
67
+ process.exit(1);
68
+ }
69
+ const deps = resolveDependencies(name, all);
70
+ for (const dep of deps)
71
+ toInstall.add(dep);
72
+ toInstall.add(name);
73
+ }
74
+ await mkdir(outputDir, { recursive: true });
75
+ for (const name of toInstall) {
76
+ const entry = all[name];
77
+ const srcFile = join(sourceDir, entry.file);
78
+ const destFile = join(outputDir, entry.file.replace(/^src\//, ""));
79
+ await mkdir(dirname(destFile), { recursive: true });
80
+ if (existsSync(destFile) && !overwrite) {
81
+ console.warn(` skip ${entry.file} (already exists, use --overwrite to replace)`);
82
+ continue;
83
+ }
84
+ const content = await readFile(srcFile, "utf-8");
85
+ await writeFile(destFile, content, "utf-8");
86
+ console.log(` copy ${entry.file}`);
87
+ }
88
+ console.log(`\nDone. Components copied to ${outputDir}`);
89
+ }
90
+ export async function listComponents(options) {
91
+ const theme = options.theme ?? "default";
92
+ const registry = await loadRegistry(theme);
93
+ console.log(`\nAvailable components in @noxion/theme-${theme}:\n`);
94
+ if (Object.keys(registry.components).length > 0) {
95
+ console.log("Components:");
96
+ for (const [name, entry] of Object.entries(registry.components)) {
97
+ const deps = entry.dependencies.length > 0 ? ` (deps: ${entry.dependencies.join(", ")})` : "";
98
+ console.log(` ${name}${deps}`);
99
+ }
100
+ }
101
+ if (Object.keys(registry.layouts).length > 0) {
102
+ console.log("\nLayouts:");
103
+ for (const [name] of Object.entries(registry.layouts)) {
104
+ console.log(` ${name}`);
105
+ }
106
+ }
107
+ if (Object.keys(registry.templates).length > 0) {
108
+ console.log("\nTemplates:");
109
+ for (const [name, entry] of Object.entries(registry.templates)) {
110
+ const deps = entry.dependencies.length > 0 ? ` (deps: ${entry.dependencies.join(", ")})` : "";
111
+ console.log(` ${name}${deps}`);
112
+ }
113
+ }
114
+ console.log();
115
+ }
116
+ export async function diffComponent(name, options) {
117
+ const theme = options.theme ?? "default";
118
+ const outputDir = options.outputDir ?? join(process.cwd(), "src", "components", "noxion");
119
+ const registry = await loadRegistry(theme);
120
+ const all = getAllEntries(registry);
121
+ const sourceDir = resolveThemeSourceDir(theme);
122
+ const entry = all[name];
123
+ if (!entry) {
124
+ console.error(`Component "${name}" not found in @noxion/theme-${theme} registry.`);
125
+ process.exit(1);
126
+ }
127
+ const srcFile = join(sourceDir, entry.file);
128
+ const destFile = join(outputDir, entry.file.replace(/^src\//, ""));
129
+ if (!existsSync(destFile)) {
130
+ console.log(`Component "${name}" has not been copied yet. Run "noxion add ${name}" first.`);
131
+ return;
132
+ }
133
+ try {
134
+ execSync(`diff "${srcFile}" "${destFile}"`, { stdio: "inherit" });
135
+ console.log(`\nNo differences found for "${name}".`);
136
+ }
137
+ catch {
138
+ /* diff exits with code 1 when differences exist; output already printed to stdio */
139
+ }
140
+ }
141
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../src/add.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- export { scaffoldProject, resolveTemplateVariables, getTemplateDir } from "./scaffold.js";
2
- export type { ScaffoldOptions, ScaffoldResult } from "./scaffold.js";
1
+ export { scaffoldProject, resolveTemplateVariables, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
2
+ export type { ScaffoldOptions, ScaffoldResult, TemplateType } from "./scaffold.js";
3
+ export { addComponent, listComponents, diffComponent } from "./add.js";
4
+ export declare function runNoxionCLI(args?: string[]): Promise<void>;
3
5
  export declare function run(args?: string[]): Promise<void>;
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAErE,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiG/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAClH,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEvE,wBAAsB,YAAY,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCxF;AAID,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/E"}
package/dist/index.js CHANGED
@@ -1,18 +1,71 @@
1
1
  import * as p from "@clack/prompts";
2
2
  import { join } from "node:path";
3
- import { scaffoldProject, getTemplateDir } from "./scaffold.js";
4
- export { scaffoldProject, resolveTemplateVariables, getTemplateDir } from "./scaffold.js";
3
+ import { scaffoldProject, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
4
+ import { addComponent as _addComponent, listComponents as _listComponents, diffComponent as _diffComponent } from "./add.js";
5
+ export { scaffoldProject, resolveTemplateVariables, getTemplateDir, resolveTemplateForType } from "./scaffold.js";
6
+ export { addComponent, listComponents, diffComponent } from "./add.js";
7
+ export async function runNoxionCLI(args = process.argv.slice(2)) {
8
+ const [command, ...rest] = args;
9
+ if (command === "add") {
10
+ const names = rest.filter((a) => !a.startsWith("--"));
11
+ const flags = parseFlags(rest);
12
+ if (names.length === 0) {
13
+ console.error("Usage: noxion add <component> [--from=<theme>] [--overwrite]");
14
+ process.exit(1);
15
+ }
16
+ await _addComponent(names, {
17
+ theme: flags["from"],
18
+ overwrite: flags["overwrite"] === true,
19
+ });
20
+ return;
21
+ }
22
+ if (command === "list") {
23
+ const flags = parseFlags(rest);
24
+ await _listComponents({ theme: flags["from"] });
25
+ return;
26
+ }
27
+ if (command === "diff") {
28
+ const name = rest.find((a) => !a.startsWith("--"));
29
+ const flags = parseFlags(rest);
30
+ if (!name) {
31
+ console.error("Usage: noxion diff <component> [--from=<theme>]");
32
+ process.exit(1);
33
+ }
34
+ await _diffComponent(name, { theme: flags["from"] });
35
+ return;
36
+ }
37
+ console.error(`Unknown command: ${command}`);
38
+ console.error("Available commands: add, list, diff");
39
+ process.exit(1);
40
+ }
41
+ const TEMPLATE_TYPES = ["blog", "docs", "portfolio", "full"];
5
42
  export async function run(args = process.argv.slice(2)) {
6
43
  p.intro("create-noxion");
7
44
  const projectNameArg = args[0];
8
45
  const flagArgs = parseFlags(args.slice(projectNameArg && !projectNameArg.startsWith("-") ? 1 : 0));
9
46
  const isNonInteractive = flagArgs.yes === true;
47
+ const isPlugin = flagArgs.plugin === true;
48
+ const isTheme = flagArgs.theme === true;
49
+ if (isPlugin) {
50
+ await runPluginScaffold(projectNameArg, flagArgs, isNonInteractive);
51
+ return;
52
+ }
53
+ if (isTheme) {
54
+ await runThemeScaffold(projectNameArg, flagArgs, isNonInteractive);
55
+ return;
56
+ }
57
+ await runSiteScaffold(projectNameArg, flagArgs, isNonInteractive);
58
+ }
59
+ async function runSiteScaffold(projectNameArg, flagArgs, isNonInteractive) {
10
60
  let projectName;
11
61
  let notionPageId;
12
62
  let siteName;
13
63
  let siteDescription;
14
64
  let author;
15
65
  let domain;
66
+ let templateType;
67
+ let docsNotionId;
68
+ let portfolioNotionId;
16
69
  if (isNonInteractive) {
17
70
  projectName = projectNameArg || "my-noxion-blog";
18
71
  notionPageId = flagArgs["notion-id"] || "";
@@ -20,6 +73,9 @@ export async function run(args = process.argv.slice(2)) {
20
73
  siteDescription = flagArgs["description"] || "A blog powered by Notion and Noxion";
21
74
  author = flagArgs["author"] || "Noxion";
22
75
  domain = flagArgs["domain"] || "localhost:3000";
76
+ templateType = isValidTemplate(flagArgs["template"]) ? flagArgs["template"] : "blog";
77
+ docsNotionId = flagArgs["docs-notion-id"] || undefined;
78
+ portfolioNotionId = flagArgs["portfolio-notion-id"] || undefined;
23
79
  }
24
80
  else {
25
81
  const nameResult = await p.text({
@@ -32,8 +88,24 @@ export async function run(args = process.argv.slice(2)) {
32
88
  process.exit(0);
33
89
  }
34
90
  projectName = nameResult;
91
+ const templateResult = await p.select({
92
+ message: "Project template",
93
+ options: [
94
+ { value: "blog", label: "Blog", hint: "Blog site (default)" },
95
+ { value: "docs", label: "Docs", hint: "Documentation site with sidebar" },
96
+ { value: "portfolio", label: "Portfolio", hint: "Portfolio with project grid" },
97
+ { value: "full", label: "Full", hint: "All page types (blog + docs + portfolio)" },
98
+ ],
99
+ });
100
+ if (p.isCancel(templateResult)) {
101
+ p.cancel("Cancelled.");
102
+ process.exit(0);
103
+ }
104
+ templateType = templateResult;
35
105
  const notionResult = await p.text({
36
- message: "Notion database page ID",
106
+ message: templateType === "blog" || templateType === "full"
107
+ ? "Notion database page ID (blog)"
108
+ : `Notion database page ID (${templateType})`,
37
109
  placeholder: "e.g. abc123def456...",
38
110
  validate: (v) => (!v.trim() ? "Notion page ID is required" : undefined),
39
111
  });
@@ -42,6 +114,26 @@ export async function run(args = process.argv.slice(2)) {
42
114
  process.exit(0);
43
115
  }
44
116
  notionPageId = notionResult;
117
+ if (templateType === "full") {
118
+ const docsResult = await p.text({
119
+ message: "Notion database page ID (docs)",
120
+ placeholder: "e.g. abc123def456... (leave empty to use same as blog)",
121
+ });
122
+ if (p.isCancel(docsResult)) {
123
+ p.cancel("Cancelled.");
124
+ process.exit(0);
125
+ }
126
+ docsNotionId = docsResult || undefined;
127
+ const portfolioResult = await p.text({
128
+ message: "Notion database page ID (portfolio)",
129
+ placeholder: "e.g. abc123def456... (leave empty to use same as blog)",
130
+ });
131
+ if (p.isCancel(portfolioResult)) {
132
+ p.cancel("Cancelled.");
133
+ process.exit(0);
134
+ }
135
+ portfolioNotionId = portfolioResult || undefined;
136
+ }
45
137
  const siteNameResult = await p.text({
46
138
  message: "Site name",
47
139
  initialValue: projectName,
@@ -79,8 +171,9 @@ export async function run(args = process.argv.slice(2)) {
79
171
  }
80
172
  domain = domainResult;
81
173
  }
174
+ const templateDirName = resolveTemplateForType(templateType);
82
175
  const targetDir = join(process.cwd(), projectName);
83
- const templateDir = getTemplateDir("nextjs");
176
+ const templateDir = getTemplateDir(templateDirName);
84
177
  const options = {
85
178
  projectName,
86
179
  notionPageId,
@@ -88,6 +181,9 @@ export async function run(args = process.argv.slice(2)) {
88
181
  siteDescription,
89
182
  author,
90
183
  domain,
184
+ templateType,
185
+ docsNotionId,
186
+ portfolioNotionId,
91
187
  };
92
188
  const spinner = p.spinner();
93
189
  spinner.start("Creating project...");
@@ -99,7 +195,101 @@ export async function run(args = process.argv.slice(2)) {
99
195
  `# Add your NOTION_PAGE_ID to .env`,
100
196
  `bun run dev`,
101
197
  ].join("\n"), "Next steps");
102
- p.outro("Happy blogging!");
198
+ const templateLabel = templateType === "blog" ? "blogging" : templateType === "docs" ? "documenting" : templateType === "portfolio" ? "building" : "creating";
199
+ p.outro(`Happy ${templateLabel}!`);
200
+ }
201
+ async function runPluginScaffold(projectNameArg, flagArgs, isNonInteractive) {
202
+ let pluginName;
203
+ let pluginDescription;
204
+ if (isNonInteractive) {
205
+ pluginName = projectNameArg || "my-plugin";
206
+ pluginDescription = flagArgs["description"] || "A Noxion plugin";
207
+ }
208
+ else {
209
+ const nameResult = await p.text({
210
+ message: "Plugin name (without noxion-plugin- prefix)",
211
+ initialValue: projectNameArg || "my-plugin",
212
+ validate: (v) => (!v.trim() ? "Plugin name is required" : undefined),
213
+ });
214
+ if (p.isCancel(nameResult)) {
215
+ p.cancel("Cancelled.");
216
+ process.exit(0);
217
+ }
218
+ pluginName = nameResult;
219
+ const descResult = await p.text({
220
+ message: "Plugin description",
221
+ initialValue: "A Noxion plugin",
222
+ });
223
+ if (p.isCancel(descResult)) {
224
+ p.cancel("Cancelled.");
225
+ process.exit(0);
226
+ }
227
+ pluginDescription = descResult;
228
+ }
229
+ const targetDir = join(process.cwd(), `noxion-plugin-${pluginName}`);
230
+ const templateDir = getTemplateDir("plugin");
231
+ const options = {
232
+ projectName: `noxion-plugin-${pluginName}`,
233
+ notionPageId: "",
234
+ siteName: "",
235
+ siteDescription: "",
236
+ author: "",
237
+ domain: "",
238
+ pluginName,
239
+ pluginDescription,
240
+ };
241
+ const spinner = p.spinner();
242
+ spinner.start("Creating plugin project...");
243
+ const result = await scaffoldProject(targetDir, templateDir, options);
244
+ spinner.stop(`Created ${result.files.length} files`);
245
+ p.note([
246
+ `cd noxion-plugin-${pluginName}`,
247
+ `bun install`,
248
+ `bun test`,
249
+ ].join("\n"), "Next steps");
250
+ p.outro("Happy plugin building!");
251
+ }
252
+ async function runThemeScaffold(projectNameArg, _flagArgs, isNonInteractive) {
253
+ let themeName;
254
+ if (isNonInteractive) {
255
+ themeName = projectNameArg || "my-theme";
256
+ }
257
+ else {
258
+ const nameResult = await p.text({
259
+ message: "Theme name (without noxion-theme- prefix)",
260
+ initialValue: projectNameArg || "my-theme",
261
+ validate: (v) => (!v.trim() ? "Theme name is required" : undefined),
262
+ });
263
+ if (p.isCancel(nameResult)) {
264
+ p.cancel("Cancelled.");
265
+ process.exit(0);
266
+ }
267
+ themeName = nameResult;
268
+ }
269
+ const targetDir = join(process.cwd(), `noxion-theme-${themeName}`);
270
+ const templateDir = getTemplateDir("theme");
271
+ const options = {
272
+ projectName: `noxion-theme-${themeName}`,
273
+ notionPageId: "",
274
+ siteName: "",
275
+ siteDescription: "",
276
+ author: "",
277
+ domain: "",
278
+ themeName,
279
+ };
280
+ const spinner = p.spinner();
281
+ spinner.start("Creating theme project...");
282
+ const result = await scaffoldProject(targetDir, templateDir, options);
283
+ spinner.stop(`Created ${result.files.length} files`);
284
+ p.note([
285
+ `cd noxion-theme-${themeName}`,
286
+ `bun install`,
287
+ `bun run build`,
288
+ ].join("\n"), "Next steps");
289
+ p.outro("Happy theming!");
290
+ }
291
+ function isValidTemplate(value) {
292
+ return typeof value === "string" && TEMPLATE_TYPES.includes(value);
103
293
  }
104
294
  function parseFlags(args) {
105
295
  const flags = {};
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export type TemplateType = "blog" | "docs" | "portfolio" | "full";
1
2
  export interface ScaffoldOptions {
2
3
  projectName: string;
3
4
  notionPageId: string;
@@ -5,6 +6,12 @@ export interface ScaffoldOptions {
5
6
  siteDescription: string;
6
7
  author: string;
7
8
  domain: string;
9
+ templateType?: TemplateType;
10
+ docsNotionId?: string;
11
+ portfolioNotionId?: string;
12
+ pluginName?: string;
13
+ pluginDescription?: string;
14
+ themeName?: string;
8
15
  }
9
16
  export interface ScaffoldResult {
10
17
  directory: string;
@@ -12,5 +19,6 @@ export interface ScaffoldResult {
12
19
  }
13
20
  export declare function resolveTemplateVariables(content: string, options: ScaffoldOptions): string;
14
21
  export declare function scaffoldProject(targetDir: string, templateDir: string, options: ScaffoldOptions): Promise<ScaffoldResult>;
15
- export declare function getTemplateDir(framework: string): string;
22
+ export declare function getTemplateDir(template: string): string;
23
+ export declare function resolveTemplateForType(templateType: TemplateType): string;
16
24
  //# sourceMappingURL=scaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,MAAM,CAQR;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CASzB;AA6BD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACvB,MAAM,CAaR;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CASzB;AA6BD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAWzE"}
package/dist/scaffold.js CHANGED
@@ -7,7 +7,12 @@ export function resolveTemplateVariables(content, options) {
7
7
  .replace(/\{\{SITE_NAME\}\}/g, options.siteName)
8
8
  .replace(/\{\{SITE_DESCRIPTION\}\}/g, options.siteDescription)
9
9
  .replace(/\{\{AUTHOR\}\}/g, options.author)
10
- .replace(/\{\{DOMAIN\}\}/g, options.domain);
10
+ .replace(/\{\{DOMAIN\}\}/g, options.domain)
11
+ .replace(/\{\{DOCS_NOTION_ID\}\}/g, options.docsNotionId ?? "")
12
+ .replace(/\{\{PORTFOLIO_NOTION_ID\}\}/g, options.portfolioNotionId ?? "")
13
+ .replace(/\{\{PLUGIN_NAME\}\}/g, options.pluginName ?? "")
14
+ .replace(/\{\{PLUGIN_DESCRIPTION\}\}/g, options.pluginDescription ?? "A Noxion plugin")
15
+ .replace(/\{\{THEME_NAME\}\}/g, options.themeName ?? "");
11
16
  }
12
17
  export async function scaffoldProject(targetDir, templateDir, options) {
13
18
  await mkdir(targetDir, { recursive: true });
@@ -36,7 +41,19 @@ async function copyTemplateDir(src, dest, options, files = []) {
36
41
  }
37
42
  return files;
38
43
  }
39
- export function getTemplateDir(framework) {
40
- return join(import.meta.dirname, "templates", framework);
44
+ export function getTemplateDir(template) {
45
+ return join(import.meta.dirname, "templates", template);
46
+ }
47
+ export function resolveTemplateForType(templateType) {
48
+ switch (templateType) {
49
+ case "blog":
50
+ return "nextjs";
51
+ case "docs":
52
+ return "docs";
53
+ case "portfolio":
54
+ return "portfolio";
55
+ case "full":
56
+ return "full";
57
+ }
41
58
  }
42
59
  //# sourceMappingURL=scaffold.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAgB3C,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,OAAwB;IAExB,OAAO,OAAO;SACX,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,WAAW,CAAC;SACrD,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC;SACxD,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,QAAQ,CAAC;SAC/C,OAAO,CAAC,2BAA2B,EAAE,OAAO,CAAC,eAAe,CAAC;SAC7D,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC;SAC1C,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,WAAmB,EACnB,OAAwB;IAExB,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErE,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,KAAK;KACN,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,GAAW,EACX,IAAY,EACZ,OAAwB,EACxB,QAAkB,EAAE;IAEpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ NOTION_PAGE_ID={{NOTION_PAGE_ID}}
2
+ NOTION_TOKEN=
3
+ NOTION_SPACE_ID=
4
+ SITE_NAME={{SITE_NAME}}
5
+ SITE_DOMAIN={{DOMAIN}}
6
+ SITE_AUTHOR={{AUTHOR}}
7
+ SITE_DESCRIPTION={{SITE_DESCRIPTION}}
8
+ REVALIDATE_SECRET=
@@ -0,0 +1,9 @@
1
+ NOTION_PAGE_ID={{NOTION_PAGE_ID}}
2
+ NOTION_TOKEN=
3
+ NOTION_SPACE_ID=
4
+ SITE_NAME={{SITE_NAME}}
5
+ SITE_DOMAIN={{DOMAIN}}
6
+ SITE_AUTHOR={{AUTHOR}}
7
+ SITE_DESCRIPTION={{SITE_DESCRIPTION}}
8
+ REVALIDATE_SECRET=
9
+ NOTION_WEBHOOK_SECRET=
@@ -0,0 +1,49 @@
1
+ import { notFound } from "next/navigation";
2
+ import type { Metadata } from "next";
3
+ import { NotionPage } from "@noxion/renderer";
4
+ import { generateNoxionMetadata } from "@noxion/adapter-nextjs";
5
+ import { getPageBySlug, getPageRecordMap, getAllPages } from "../../lib/notion";
6
+ import { siteConfig } from "../../lib/config";
7
+
8
+ export const revalidate = 3600;
9
+
10
+ export async function generateStaticParams() {
11
+ const pages = await getAllPages();
12
+ return pages.map((p) => ({ slug: p.slug }));
13
+ }
14
+
15
+ export async function generateMetadata({
16
+ params,
17
+ }: {
18
+ params: Promise<{ slug: string }>;
19
+ }): Promise<Metadata> {
20
+ const { slug } = await params;
21
+ const page = await getPageBySlug(slug);
22
+ if (!page) return { title: "Not Found" };
23
+ return generateNoxionMetadata(page, siteConfig);
24
+ }
25
+
26
+ export default async function DocPage({
27
+ params,
28
+ }: {
29
+ params: Promise<{ slug: string }>;
30
+ }) {
31
+ const { slug } = await params;
32
+ const page = await getPageBySlug(slug);
33
+ if (!page) notFound();
34
+
35
+ const recordMap = await getPageRecordMap(page.id);
36
+
37
+ return (
38
+ <article>
39
+ <NotionPage
40
+ recordMap={recordMap}
41
+ rootPageId={page.id}
42
+ fullPage
43
+ previewImages
44
+ showTableOfContents
45
+ mapPageUrl={(pageId: string) => `/${pageId}`}
46
+ />
47
+ </article>
48
+ );
49
+ }