basecampjs 0.0.12 → 0.0.14
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.
- package/dist/build/assets.d.ts +36 -0
- package/dist/build/assets.d.ts.map +1 -0
- package/dist/build/assets.js +272 -0
- package/dist/build/assets.js.map +1 -0
- package/dist/build/data.d.ts +6 -0
- package/dist/build/data.d.ts.map +1 -0
- package/dist/build/data.js +33 -0
- package/dist/build/data.js.map +1 -0
- package/dist/build/pages.d.ts +19 -0
- package/dist/build/pages.d.ts.map +1 -0
- package/dist/build/pages.js +110 -0
- package/dist/build/pages.js.map +1 -0
- package/dist/build/pipeline.d.ts +6 -0
- package/dist/build/pipeline.d.ts.map +1 -0
- package/dist/build/pipeline.js +98 -0
- package/dist/build/pipeline.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +140 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/dev/server.d.ts +6 -0
- package/dist/dev/server.d.ts.map +1 -0
- package/dist/dev/server.js +64 -0
- package/dist/dev/server.js.map +1 -0
- package/dist/dev/watcher.d.ts +5 -0
- package/dist/dev/watcher.d.ts.map +1 -0
- package/dist/dev/watcher.js +49 -0
- package/dist/dev/watcher.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/render/engines.d.ts +30 -0
- package/dist/render/engines.d.ts.map +1 -0
- package/dist/render/engines.js +102 -0
- package/dist/render/engines.js.map +1 -0
- package/dist/scaffolding.d.ts +25 -0
- package/dist/scaffolding.d.ts.map +1 -0
- package/dist/scaffolding.js +596 -0
- package/dist/scaffolding.js.map +1 -0
- package/dist/types.d.ts +91 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fs.d.ts +29 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +104 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/paths.d.ts +17 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +55 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +36 -6
- package/src/build/assets.ts +314 -0
- package/src/build/data.ts +32 -0
- package/src/build/pages.ts +143 -0
- package/src/build/pipeline.ts +111 -0
- package/src/cli.ts +155 -0
- package/src/config.ts +61 -0
- package/src/dev/server.ts +66 -0
- package/src/dev/watcher.ts +52 -0
- package/src/index.ts +45 -0
- package/src/render/engines.ts +139 -0
- package/src/scaffolding.ts +656 -0
- package/src/types.ts +110 -0
- package/src/utils/fs.ts +109 -0
- package/src/utils/logger.ts +27 -0
- package/src/utils/paths.ts +56 -0
- package/index.js +0 -1516
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAiFA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAmE1C"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { argv, exit } from "process";
|
|
3
|
+
import { existsSync } from "fs";
|
|
4
|
+
import { resolve } from "path";
|
|
5
|
+
import { loadConfig, getVersion } from "./config.js";
|
|
6
|
+
import { build } from "./build/pipeline.js";
|
|
7
|
+
import { serve } from "./dev/server.js";
|
|
8
|
+
import { dev } from "./dev/watcher.js";
|
|
9
|
+
import { init, clean, check, list, upgrade, makeContent } from "./scaffolding.js";
|
|
10
|
+
import { kolor } from "./utils/logger.js";
|
|
11
|
+
const cwd = process.cwd();
|
|
12
|
+
function showHelp() {
|
|
13
|
+
console.log(kolor.cyan(kolor.bold("\n🏕️ CampsiteJS CLI")));
|
|
14
|
+
console.log(kolor.dim("Build and manage your static campsite.\n"));
|
|
15
|
+
console.log(kolor.bold("Usage:"));
|
|
16
|
+
console.log(" camper <command> [arguments] [options]\n");
|
|
17
|
+
console.log(kolor.bold("Project Commands:"));
|
|
18
|
+
console.log(" " + kolor.cyan("init") + " Initialize a new Campsite project in current directory");
|
|
19
|
+
console.log(" Creates config, folder structure, and starter files\n");
|
|
20
|
+
console.log(kolor.bold("Development Commands:"));
|
|
21
|
+
console.log(" " + kolor.cyan("dev") + " Start development server with hot reloading");
|
|
22
|
+
console.log(" Watches for file changes and rebuilds automatically");
|
|
23
|
+
console.log(" " + kolor.cyan("build") + " Build your site for production");
|
|
24
|
+
console.log(" Optimizes and outputs to dist/ directory");
|
|
25
|
+
console.log(" " + kolor.cyan("serve") + " Serve the built site locally");
|
|
26
|
+
console.log(" Serves from dist/ folder on http://localhost:4173");
|
|
27
|
+
console.log(" " + kolor.cyan("preview") + " Build and serve in production mode");
|
|
28
|
+
console.log(" Combines build + serve for testing production output\n");
|
|
29
|
+
console.log(kolor.bold("Utility Commands:"));
|
|
30
|
+
console.log(" " + kolor.cyan("list") + " List all content (pages, layouts, components, etc.)");
|
|
31
|
+
console.log(" Overview of your project structure");
|
|
32
|
+
console.log(" " + kolor.cyan("clean") + " Remove build output directory");
|
|
33
|
+
console.log(" Deletes dist/ folder for a fresh build");
|
|
34
|
+
console.log(" " + kolor.cyan("check") + " Validate config and check for issues");
|
|
35
|
+
console.log(" Diagnoses project structure and dependencies");
|
|
36
|
+
console.log(" " + kolor.cyan("upgrade") + " Update CampsiteJS to the latest version");
|
|
37
|
+
console.log(" Checks and upgrades basecampjs and dependencies\n");
|
|
38
|
+
console.log(kolor.bold("Make Commands:"));
|
|
39
|
+
console.log(" " + kolor.cyan("make:page") + " " + kolor.dim("<name>") + " Create a new page in src/pages/");
|
|
40
|
+
console.log(" " + kolor.cyan("make:post") + " " + kolor.dim("<name>") + " Create a new blog post in src/pages/blog/");
|
|
41
|
+
console.log(" " + kolor.cyan("make:layout") + " " + kolor.dim("<name>") + " Create a new layout in src/layouts/");
|
|
42
|
+
console.log(" " + kolor.cyan("make:component") + " " + kolor.dim("<name>") + " Create a new component in src/components/");
|
|
43
|
+
console.log(" " + kolor.cyan("make:partial") + " " + kolor.dim("<name>") + " Create a new partial in src/partials/");
|
|
44
|
+
console.log(" " + kolor.cyan("make:collection") + " " + kolor.dim("<name>") + " Create a new JSON collection in src/collections/\n");
|
|
45
|
+
console.log(kolor.bold("Options:"));
|
|
46
|
+
console.log(" -h, --help Show this help message");
|
|
47
|
+
console.log(" -v, --version Show version number\n");
|
|
48
|
+
console.log(kolor.bold("Examples:"));
|
|
49
|
+
console.log(" " + kolor.dim("# Initialize a new project"));
|
|
50
|
+
console.log(" camper init\n");
|
|
51
|
+
console.log(" " + kolor.dim("# Start development"));
|
|
52
|
+
console.log(" camper dev\n");
|
|
53
|
+
console.log(" " + kolor.dim("# Create new content"));
|
|
54
|
+
console.log(" camper make:page about");
|
|
55
|
+
console.log(" camper make:post \"My First Post\"");
|
|
56
|
+
console.log(" camper make:collection products\n");
|
|
57
|
+
console.log(" " + kolor.dim("# Build and preview"));
|
|
58
|
+
console.log(" camper preview\n");
|
|
59
|
+
console.log(kolor.dim("For more information, visit: https://campsitejs.dev"));
|
|
60
|
+
console.log();
|
|
61
|
+
}
|
|
62
|
+
async function preview() {
|
|
63
|
+
console.log(kolor.cyan(kolor.bold("🏔️ Building for production preview...\n")));
|
|
64
|
+
await build();
|
|
65
|
+
console.log();
|
|
66
|
+
const config = await loadConfig(cwd);
|
|
67
|
+
const outDir = resolve(cwd, config.outDir || "dist");
|
|
68
|
+
console.log(kolor.cyan(kolor.bold("🔥 Starting preview server...\n")));
|
|
69
|
+
serve(outDir, config.port || 4173);
|
|
70
|
+
}
|
|
71
|
+
export async function main() {
|
|
72
|
+
const command = argv[2] || "help";
|
|
73
|
+
// Handle flags
|
|
74
|
+
if (command === "-h" || command === "--help" || command === "help") {
|
|
75
|
+
showHelp();
|
|
76
|
+
exit(0);
|
|
77
|
+
}
|
|
78
|
+
if (command === "-v" || command === "--version") {
|
|
79
|
+
const version = await getVersion();
|
|
80
|
+
console.log(`v${version}`);
|
|
81
|
+
exit(0);
|
|
82
|
+
}
|
|
83
|
+
// Handle make:type commands
|
|
84
|
+
if (command.startsWith("make:")) {
|
|
85
|
+
const type = command.substring(5); // Remove 'make:' prefix
|
|
86
|
+
if (!type) {
|
|
87
|
+
console.log(kolor.red("❌ No type specified"));
|
|
88
|
+
console.log(kolor.dim("Run 'camper --help' for available make commands.\n"));
|
|
89
|
+
exit(1);
|
|
90
|
+
}
|
|
91
|
+
await makeContent(type, argv.slice(3));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
switch (command) {
|
|
95
|
+
case "init":
|
|
96
|
+
await init();
|
|
97
|
+
break;
|
|
98
|
+
case "dev":
|
|
99
|
+
await dev();
|
|
100
|
+
break;
|
|
101
|
+
case "build":
|
|
102
|
+
await build();
|
|
103
|
+
break;
|
|
104
|
+
case "serve": {
|
|
105
|
+
const config = await loadConfig(cwd);
|
|
106
|
+
const outDir = resolve(cwd, config.outDir || "dist");
|
|
107
|
+
if (!existsSync(outDir)) {
|
|
108
|
+
await build();
|
|
109
|
+
}
|
|
110
|
+
serve(outDir, config.port || 4173);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case "preview":
|
|
114
|
+
await preview();
|
|
115
|
+
break;
|
|
116
|
+
case "clean":
|
|
117
|
+
case "cleanup":
|
|
118
|
+
await clean();
|
|
119
|
+
break;
|
|
120
|
+
case "check":
|
|
121
|
+
await check();
|
|
122
|
+
break;
|
|
123
|
+
case "list":
|
|
124
|
+
await list();
|
|
125
|
+
break;
|
|
126
|
+
case "upgrade":
|
|
127
|
+
await upgrade();
|
|
128
|
+
break;
|
|
129
|
+
default:
|
|
130
|
+
console.log(kolor.yellow(`Unknown command: ${command}`));
|
|
131
|
+
console.log(kolor.dim("Run 'camper --help' for usage information."));
|
|
132
|
+
exit(1);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Run CLI if this is the entry point
|
|
136
|
+
main().catch((err) => {
|
|
137
|
+
console.error(err);
|
|
138
|
+
exit(1);
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CampsiteConfig } from "./types.js";
|
|
2
|
+
export declare const defaultConfig: CampsiteConfig;
|
|
3
|
+
/**
|
|
4
|
+
* Load config from campsite.config.js, merged with defaults
|
|
5
|
+
*/
|
|
6
|
+
export declare function loadConfig(root: string): Promise<CampsiteConfig>;
|
|
7
|
+
/**
|
|
8
|
+
* Get the version from package.json
|
|
9
|
+
*/
|
|
10
|
+
export declare function getVersion(): Promise<string>;
|
|
11
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,eAAO,MAAM,aAAa,EAAE,cAoB3B,CAAC;AAEF;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAYtE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CASlD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { join, dirname } from "path";
|
|
4
|
+
import { pathToFileURL, fileURLToPath } from "url";
|
|
5
|
+
import { kolor } from "./utils/logger.js";
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
export const defaultConfig = {
|
|
8
|
+
siteName: "Campsite",
|
|
9
|
+
siteUrl: "https://example.com",
|
|
10
|
+
srcDir: "src",
|
|
11
|
+
outDir: "dist",
|
|
12
|
+
templateEngine: "nunjucks",
|
|
13
|
+
frontmatter: true,
|
|
14
|
+
minifyCSS: false,
|
|
15
|
+
minifyHTML: false,
|
|
16
|
+
cacheBustAssets: false,
|
|
17
|
+
excludeFiles: [],
|
|
18
|
+
compressPhotos: false,
|
|
19
|
+
compressionSettings: {
|
|
20
|
+
quality: 80,
|
|
21
|
+
formats: [".webp"],
|
|
22
|
+
inputFormats: [".jpg", ".jpeg", ".png"],
|
|
23
|
+
preserveOriginal: true
|
|
24
|
+
},
|
|
25
|
+
port: 4173,
|
|
26
|
+
integrations: { nunjucks: true, liquid: false, mustache: false, vue: false, alpine: false }
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Load config from campsite.config.js, merged with defaults
|
|
30
|
+
*/
|
|
31
|
+
export async function loadConfig(root) {
|
|
32
|
+
const configPath = join(root, "campsite.config.js");
|
|
33
|
+
if (!existsSync(configPath))
|
|
34
|
+
return { ...defaultConfig };
|
|
35
|
+
try {
|
|
36
|
+
const imported = await import(pathToFileURL(configPath).href);
|
|
37
|
+
const user = imported.default || imported;
|
|
38
|
+
return { ...defaultConfig, ...user };
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
42
|
+
console.error(kolor.red(`Failed to load config: ${message}`));
|
|
43
|
+
return { ...defaultConfig };
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the version from package.json
|
|
48
|
+
*/
|
|
49
|
+
export async function getVersion() {
|
|
50
|
+
try {
|
|
51
|
+
const pkgPath = join(__dirname, "..", "package.json");
|
|
52
|
+
const raw = await readFile(pkgPath, "utf8");
|
|
53
|
+
const pkg = JSON.parse(raw);
|
|
54
|
+
return pkg.version || "0.0.0";
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return "0.0.0";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,qBAAqB;IAC9B,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,MAAM;IACd,cAAc,EAAE,UAAU;IAC1B,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,EAAE;IAChB,cAAc,EAAE,KAAK;IACrB,mBAAmB,EAAE;QACnB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC,OAAO,CAAC;QAClB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;QACvC,gBAAgB,EAAE,IAAI;KACvB;IACD,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;CAC5F,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;QAC1C,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACpD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dev/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiD,MAAM,EAAE,MAAM,MAAM,CAAC;AAqB7E;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAa,GAAG,MAAM,CAyCjE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { createServer } from "http";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { readFile, stat } from "fs/promises";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { getExt } from "../utils/fs.js";
|
|
6
|
+
import { kolor } from "../utils/logger.js";
|
|
7
|
+
const MIME_TYPES = {
|
|
8
|
+
".html": "text/html",
|
|
9
|
+
".css": "text/css",
|
|
10
|
+
".js": "application/javascript",
|
|
11
|
+
".json": "application/json",
|
|
12
|
+
".svg": "image/svg+xml",
|
|
13
|
+
".png": "image/png",
|
|
14
|
+
".jpg": "image/jpeg",
|
|
15
|
+
".jpeg": "image/jpeg",
|
|
16
|
+
".gif": "image/gif",
|
|
17
|
+
".webp": "image/webp",
|
|
18
|
+
".ico": "image/x-icon"
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Serve static files from a directory
|
|
22
|
+
*/
|
|
23
|
+
export function serve(outDir, port = 4173) {
|
|
24
|
+
const server = createServer(async (req, res) => {
|
|
25
|
+
const urlPath = decodeURI((req.url || "/").split("?")[0]);
|
|
26
|
+
const safePath = urlPath.replace(/\.\.+/g, "");
|
|
27
|
+
const requestPath = safePath.replace(/^\/+/, "") || "index.html";
|
|
28
|
+
let filePath = join(outDir, requestPath);
|
|
29
|
+
const notFoundPath = join(outDir, "404.html");
|
|
30
|
+
const indexPath = join(outDir, "index.html");
|
|
31
|
+
let isNotFoundResponse = false;
|
|
32
|
+
try {
|
|
33
|
+
const stats = await stat(filePath);
|
|
34
|
+
if (stats.isDirectory()) {
|
|
35
|
+
filePath = join(filePath, "index.html");
|
|
36
|
+
await stat(filePath);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
if (existsSync(notFoundPath)) {
|
|
41
|
+
filePath = notFoundPath;
|
|
42
|
+
isNotFoundResponse = true;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
filePath = indexPath;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const data = await readFile(filePath);
|
|
50
|
+
const type = MIME_TYPES[getExt(filePath)] || "text/plain";
|
|
51
|
+
res.writeHead(isNotFoundResponse ? 404 : 200, { "Content-Type": type });
|
|
52
|
+
res.end(data);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
56
|
+
res.end("Not found");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
server.listen(port, () => {
|
|
60
|
+
console.log(kolor.green(`Serving dist at http://localhost:${port}`));
|
|
61
|
+
});
|
|
62
|
+
return server;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/dev/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/dev/watcher.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,wBAAsB,GAAG,CAAC,MAAM,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCvE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { join, relative, resolve } from "path";
|
|
2
|
+
import chokidar from "chokidar";
|
|
3
|
+
import { loadConfig } from "../config.js";
|
|
4
|
+
import { build } from "../build/pipeline.js";
|
|
5
|
+
import { serve } from "./server.js";
|
|
6
|
+
import { kolor } from "../utils/logger.js";
|
|
7
|
+
/**
|
|
8
|
+
* Start development mode with file watching and live rebuilds
|
|
9
|
+
*/
|
|
10
|
+
export async function dev(cwdArg = process.cwd()) {
|
|
11
|
+
let building = false;
|
|
12
|
+
let pending = false;
|
|
13
|
+
const runBuild = async () => {
|
|
14
|
+
if (building) {
|
|
15
|
+
pending = true;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
building = true;
|
|
19
|
+
try {
|
|
20
|
+
// Skip image compression, minification, and cache busting during dev mode for faster rebuilds
|
|
21
|
+
await build(cwdArg, { skipImageCompression: true, devMode: true });
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
25
|
+
console.error(kolor.red(`Build failed: ${message}`));
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
building = false;
|
|
29
|
+
if (pending) {
|
|
30
|
+
pending = false;
|
|
31
|
+
runBuild();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
await runBuild();
|
|
36
|
+
const config = await loadConfig(cwdArg);
|
|
37
|
+
const srcDir = resolve(cwdArg, config.srcDir || "src");
|
|
38
|
+
const dataDir = join(srcDir, "data");
|
|
39
|
+
const collectionsDir = join(srcDir, "collections");
|
|
40
|
+
const publicDir = resolve(cwdArg, "public");
|
|
41
|
+
const outDir = resolve(cwdArg, config.outDir || "dist");
|
|
42
|
+
const watcher = chokidar.watch([srcDir, publicDir, dataDir, collectionsDir], { ignoreInitial: true });
|
|
43
|
+
watcher.on("all", (event, path) => {
|
|
44
|
+
console.log(kolor.cyan(`↻ ${event}: ${relative(cwdArg, path)}`));
|
|
45
|
+
runBuild();
|
|
46
|
+
});
|
|
47
|
+
serve(outDir, config.port || 4173);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=watcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/dev/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,SAAiB,OAAO,CAAC,GAAG,EAAE;IACtD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;YACf,OAAO;QACT,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC;YACH,8FAA8F;YAC9F,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;gBAAS,CAAC;YACT,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,GAAG,KAAK,CAAC;gBAChB,QAAQ,EAAE,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,QAAQ,EAAE,CAAC;IAEjB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* BasecampJS - The engine powering CampsiteJS
|
|
4
|
+
*
|
|
5
|
+
* This is the main entry point that re-exports the public API
|
|
6
|
+
* and runs the CLI when executed directly.
|
|
7
|
+
*/
|
|
8
|
+
export type { CampsiteConfig, CompressionSettings, Integrations, ConfigHooks, PageFrontmatter, PageContext, RenderOptions, Collections, BuildOptions, ProcessedImage, AssetMap, SitemapUrl, MakeContentResult } from "./types.js";
|
|
9
|
+
export { loadConfig, defaultConfig, getVersion } from "./config.js";
|
|
10
|
+
export { build } from "./build/pipeline.js";
|
|
11
|
+
export { serve } from "./dev/server.js";
|
|
12
|
+
export { dev } from "./dev/watcher.js";
|
|
13
|
+
export { init, clean, check, list, upgrade, makeContent } from "./scaffolding.js";
|
|
14
|
+
export { createNunjucksEnv, createLiquidEnv, md } from "./render/engines.js";
|
|
15
|
+
export { slugify, formatDate, toUrlPath, normalizeUrl } from "./utils/paths.js";
|
|
16
|
+
export { walkFiles, ensureDir, cleanDir, getExt, formatBytes } from "./utils/fs.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,UAAU,EACV,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* BasecampJS - The engine powering CampsiteJS
|
|
4
|
+
*
|
|
5
|
+
* This is the main entry point that re-exports the public API
|
|
6
|
+
* and runs the CLI when executed directly.
|
|
7
|
+
*/
|
|
8
|
+
// Public API exports
|
|
9
|
+
export { loadConfig, defaultConfig, getVersion } from "./config.js";
|
|
10
|
+
export { build } from "./build/pipeline.js";
|
|
11
|
+
export { serve } from "./dev/server.js";
|
|
12
|
+
export { dev } from "./dev/watcher.js";
|
|
13
|
+
export { init, clean, check, list, upgrade, makeContent } from "./scaffolding.js";
|
|
14
|
+
// Template engine utilities
|
|
15
|
+
export { createNunjucksEnv, createLiquidEnv, md } from "./render/engines.js";
|
|
16
|
+
// Utility exports for advanced users
|
|
17
|
+
export { slugify, formatDate, toUrlPath, normalizeUrl } from "./utils/paths.js";
|
|
18
|
+
export { walkFiles, ensureDir, cleanDir, getExt, formatBytes } from "./utils/fs.js";
|
|
19
|
+
// Run CLI when executed directly
|
|
20
|
+
import { main } from "./cli.js";
|
|
21
|
+
main().catch((err) => {
|
|
22
|
+
console.error(err);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAmBH,qBAAqB;AACrB,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElF,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAE7E,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEpF,iCAAiC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import nunjucks from "nunjucks";
|
|
2
|
+
import { Liquid } from "liquidjs";
|
|
3
|
+
import Mustache from "mustache";
|
|
4
|
+
import MarkdownIt from "markdown-it";
|
|
5
|
+
export declare const md: MarkdownIt;
|
|
6
|
+
/**
|
|
7
|
+
* Create and configure a Nunjucks environment
|
|
8
|
+
*/
|
|
9
|
+
export declare function createNunjucksEnv(layoutsDir: string, pagesDir: string, srcDir: string, partialsDir: string): nunjucks.Environment;
|
|
10
|
+
/**
|
|
11
|
+
* Create and configure a Liquid environment
|
|
12
|
+
*/
|
|
13
|
+
export declare function createLiquidEnv(layoutsDir: string, pagesDir: string, srcDir: string, partialsDir: string): Liquid;
|
|
14
|
+
/**
|
|
15
|
+
* Load all Mustache partials from a directory
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadMustachePartials(partialsDir: string): Promise<Record<string, string>>;
|
|
18
|
+
interface LayoutContext {
|
|
19
|
+
page?: Record<string, unknown>;
|
|
20
|
+
site?: {
|
|
21
|
+
name?: string;
|
|
22
|
+
};
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Render content with a layout
|
|
27
|
+
*/
|
|
28
|
+
export declare function renderWithLayout(layoutName: string | undefined, html: string, ctx: LayoutContext, env: nunjucks.Environment, liquidEnv: Liquid, layoutsDir: string, partials?: Record<string, string>): Promise<string>;
|
|
29
|
+
export { Mustache };
|
|
30
|
+
//# sourceMappingURL=engines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engines.d.ts","sourceRoot":"","sources":["../../src/render/engines.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,UAAU,MAAM,aAAa,CAAC;AAKrC,eAAO,MAAM,EAAE,YAAmE,CAAC;AAEnF;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,QAAQ,CAAC,WAAW,CAgBtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmB/F;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,QAAQ,CAAC,WAAW,EACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACpC,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAGD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { basename, join } from "path";
|
|
4
|
+
import nunjucks from "nunjucks";
|
|
5
|
+
import { Liquid } from "liquidjs";
|
|
6
|
+
import Mustache from "mustache";
|
|
7
|
+
import MarkdownIt from "markdown-it";
|
|
8
|
+
import { normalizeUrl } from "../utils/paths.js";
|
|
9
|
+
import { walkFiles, getExt } from "../utils/fs.js";
|
|
10
|
+
import { kolor } from "../utils/logger.js";
|
|
11
|
+
export const md = new MarkdownIt({ html: true, linkify: true, typographer: true });
|
|
12
|
+
/**
|
|
13
|
+
* Create and configure a Nunjucks environment
|
|
14
|
+
*/
|
|
15
|
+
export function createNunjucksEnv(layoutsDir, pagesDir, srcDir, partialsDir) {
|
|
16
|
+
// Allow templates to resolve from layouts, partials, pages, or the src root
|
|
17
|
+
const searchPaths = [layoutsDir, partialsDir, pagesDir, srcDir].filter(Boolean);
|
|
18
|
+
const env = new nunjucks.Environment(new nunjucks.FileSystemLoader(searchPaths, { noCache: true }), { autoescape: false });
|
|
19
|
+
// Add isActive filter for navigation menus
|
|
20
|
+
// Usage: {{ item.url | isActive(page.path) }}
|
|
21
|
+
env.addFilter('isActive', function (url, currentPath) {
|
|
22
|
+
if (!url || !currentPath)
|
|
23
|
+
return false;
|
|
24
|
+
return normalizeUrl(url) === normalizeUrl(currentPath);
|
|
25
|
+
});
|
|
26
|
+
return env;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create and configure a Liquid environment
|
|
30
|
+
*/
|
|
31
|
+
export function createLiquidEnv(layoutsDir, pagesDir, srcDir, partialsDir) {
|
|
32
|
+
// Liquid loader will search these roots for partials/layouts
|
|
33
|
+
const root = [layoutsDir, partialsDir, pagesDir, srcDir].filter(Boolean);
|
|
34
|
+
const liquidEnv = new Liquid({
|
|
35
|
+
root,
|
|
36
|
+
extname: ".liquid",
|
|
37
|
+
cache: false
|
|
38
|
+
});
|
|
39
|
+
// Add isActive filter for navigation menus
|
|
40
|
+
// Usage: {{ item.url | isActive: page.path }}
|
|
41
|
+
liquidEnv.registerFilter('isActive', function (url, currentPath) {
|
|
42
|
+
if (!url || !currentPath)
|
|
43
|
+
return false;
|
|
44
|
+
return normalizeUrl(url) === normalizeUrl(currentPath);
|
|
45
|
+
});
|
|
46
|
+
return liquidEnv;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Load all Mustache partials from a directory
|
|
50
|
+
*/
|
|
51
|
+
export async function loadMustachePartials(partialsDir) {
|
|
52
|
+
const partials = {};
|
|
53
|
+
if (!existsSync(partialsDir))
|
|
54
|
+
return partials;
|
|
55
|
+
try {
|
|
56
|
+
const files = await walkFiles(partialsDir);
|
|
57
|
+
await Promise.all(files.map(async (file) => {
|
|
58
|
+
if (getExt(file) === ".mustache") {
|
|
59
|
+
const content = await readFile(file, "utf8");
|
|
60
|
+
const partialName = basename(file, ".mustache");
|
|
61
|
+
partials[partialName] = content;
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
67
|
+
console.error(kolor.yellow(`Warning: Failed to load Mustache partials: ${message}`));
|
|
68
|
+
}
|
|
69
|
+
return partials;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Render content with a layout
|
|
73
|
+
*/
|
|
74
|
+
export async function renderWithLayout(layoutName, html, ctx, env, liquidEnv, layoutsDir, partials = {}) {
|
|
75
|
+
if (!layoutName)
|
|
76
|
+
return html;
|
|
77
|
+
const ext = getExt(layoutName);
|
|
78
|
+
const layoutCtx = {
|
|
79
|
+
...ctx,
|
|
80
|
+
frontmatter: ctx.page || {},
|
|
81
|
+
content: html,
|
|
82
|
+
title: ctx.page?.title ?? ctx.site?.name
|
|
83
|
+
};
|
|
84
|
+
if (ext === ".njk") {
|
|
85
|
+
return env.render(layoutName, layoutCtx);
|
|
86
|
+
}
|
|
87
|
+
if (ext === ".liquid" || layoutName.toLowerCase().endsWith(".liquid.html")) {
|
|
88
|
+
return liquidEnv.renderFile(layoutName, layoutCtx);
|
|
89
|
+
}
|
|
90
|
+
if (ext === ".mustache") {
|
|
91
|
+
const layoutPath = join(layoutsDir, layoutName);
|
|
92
|
+
if (existsSync(layoutPath)) {
|
|
93
|
+
const layoutTemplate = await readFile(layoutPath, "utf8");
|
|
94
|
+
return Mustache.render(layoutTemplate, layoutCtx, partials);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Unknown layout type, return unwrapped content
|
|
98
|
+
return html;
|
|
99
|
+
}
|
|
100
|
+
// Re-export Mustache for use in page rendering
|
|
101
|
+
export { Mustache };
|
|
102
|
+
//# sourceMappingURL=engines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engines.js","sourceRoot":"","sources":["../../src/render/engines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initialize a new Campsite project
|
|
3
|
+
*/
|
|
4
|
+
export declare function init(): Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Clean the build output directory
|
|
7
|
+
*/
|
|
8
|
+
export declare function clean(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Check project configuration and structure
|
|
11
|
+
*/
|
|
12
|
+
export declare function check(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* List all project content
|
|
15
|
+
*/
|
|
16
|
+
export declare function list(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Upgrade CampsiteJS to latest version
|
|
19
|
+
*/
|
|
20
|
+
export declare function upgrade(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Create new content (page, post, layout, component, partial, collection)
|
|
23
|
+
*/
|
|
24
|
+
export declare function makeContent(type: string, args: string[]): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=scaffolding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffolding.d.ts","sourceRoot":"","sources":["../src/scaffolding.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA8H1C;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAY3C;AAED;;GAEG;AACH,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAoF3C;AAED;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAwF1C;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAuE7C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD7E"}
|