zengen 0.1.2 → 0.1.32
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/.github/workflows/README-PAGES.md +105 -0
- package/.github/workflows/pages.yml +72 -0
- package/.github/workflows/publish.yml +29 -4
- package/README.md +6 -71
- package/dist/builder.d.ts +4 -0
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +63 -7
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +47 -64
- package/dist/cli.js.map +1 -1
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +4 -0
- package/dist/markdown.js.map +1 -1
- package/dist/navigation.d.ts +10 -0
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +28 -4
- package/dist/navigation.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/builder.ts +65 -7
- package/src/cli.ts +50 -65
- package/src/markdown.ts +5 -0
- package/src/navigation.ts +35 -4
- package/src/types.ts +5 -0
- package/test-build/test.md +1 -0
package/dist/cli.js
CHANGED
|
@@ -51,15 +51,17 @@ program
|
|
|
51
51
|
// 构建命令
|
|
52
52
|
program
|
|
53
53
|
.command('build')
|
|
54
|
-
.description('Build documentation site from Markdown files')
|
|
55
|
-
.argument('<src-dir>', 'Source directory containing Markdown files')
|
|
56
|
-
.option('-o, --out <dir>', 'Output directory for generated HTML', 'dist')
|
|
54
|
+
.description('Build documentation site from Markdown files in current directory')
|
|
57
55
|
.option('-t, --template <file>', 'Custom template file')
|
|
58
56
|
.option('-w, --watch', 'Watch for changes and rebuild automatically')
|
|
57
|
+
.option('-s, --serve', 'Start HTTP server for preview (requires --watch)')
|
|
58
|
+
.option('-p, --port <number>', 'HTTP server port', '3000')
|
|
59
|
+
.option('--host <host>', 'HTTP server host', 'localhost')
|
|
59
60
|
.option('-v, --verbose', 'Show detailed output')
|
|
60
61
|
.option('-c, --config <file>', 'Configuration file')
|
|
62
|
+
.option('--base-url <url>', 'Base URL for generated links (e.g., https://example.com/docs)')
|
|
61
63
|
.option('--clean', 'Clean output directory before building')
|
|
62
|
-
.action(async (
|
|
64
|
+
.action(async (options) => {
|
|
63
65
|
try {
|
|
64
66
|
// 加载配置文件
|
|
65
67
|
let config = {};
|
|
@@ -74,13 +76,20 @@ program
|
|
|
74
76
|
process.exit(1);
|
|
75
77
|
}
|
|
76
78
|
}
|
|
79
|
+
// 强制使用当前目录作为 src 目录,输出到 .zen/dist 目录
|
|
80
|
+
const currentDir = process.cwd();
|
|
81
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
77
82
|
// 合并命令行参数和配置
|
|
78
83
|
const buildOptions = {
|
|
79
|
-
srcDir:
|
|
80
|
-
outDir:
|
|
84
|
+
srcDir: currentDir,
|
|
85
|
+
outDir: outDir,
|
|
81
86
|
template: options.template ? path.resolve(options.template) : undefined,
|
|
82
87
|
watch: options.watch,
|
|
83
|
-
|
|
88
|
+
serve: options.serve,
|
|
89
|
+
port: parseInt(options.port, 10),
|
|
90
|
+
host: options.host,
|
|
91
|
+
verbose: options.verbose,
|
|
92
|
+
baseUrl: options.baseUrl || config.baseUrl
|
|
84
93
|
};
|
|
85
94
|
const builder = new builder_1.ZenBuilder(config);
|
|
86
95
|
// 验证配置
|
|
@@ -90,6 +99,11 @@ program
|
|
|
90
99
|
errors.forEach(error => console.error(` - ${error}`));
|
|
91
100
|
process.exit(1);
|
|
92
101
|
}
|
|
102
|
+
// 警告 --serve 选项需要 --watch 选项
|
|
103
|
+
if (options.serve && !options.watch) {
|
|
104
|
+
console.warn('⚠️ Warning: --serve option requires --watch option, ignoring --serve');
|
|
105
|
+
buildOptions.serve = false;
|
|
106
|
+
}
|
|
93
107
|
// 清理输出目录
|
|
94
108
|
if (options.clean) {
|
|
95
109
|
await builder.clean(buildOptions.outDir);
|
|
@@ -110,12 +124,13 @@ program
|
|
|
110
124
|
// 清理命令
|
|
111
125
|
program
|
|
112
126
|
.command('clean')
|
|
113
|
-
.description('Clean output directory')
|
|
114
|
-
.
|
|
115
|
-
.action(async (dir) => {
|
|
127
|
+
.description('Clean .zen/dist output directory')
|
|
128
|
+
.action(async () => {
|
|
116
129
|
try {
|
|
117
130
|
const builder = new builder_1.ZenBuilder();
|
|
118
|
-
|
|
131
|
+
const currentDir = process.cwd();
|
|
132
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
133
|
+
await builder.clean(outDir);
|
|
119
134
|
}
|
|
120
135
|
catch (error) {
|
|
121
136
|
console.error('❌ Clean failed:', error);
|
|
@@ -131,7 +146,6 @@ program
|
|
|
131
146
|
try {
|
|
132
147
|
const targetDir = path.resolve(options.dir);
|
|
133
148
|
// 创建目录结构
|
|
134
|
-
await fs.mkdir(path.join(targetDir, 'docs'), { recursive: true });
|
|
135
149
|
await fs.mkdir(path.join(targetDir, 'static'), { recursive: true });
|
|
136
150
|
// 创建示例文档
|
|
137
151
|
const exampleDoc = `# Welcome to ZEN
|
|
@@ -140,9 +154,9 @@ This is an example documentation page generated by ZEN.
|
|
|
140
154
|
|
|
141
155
|
## Getting Started
|
|
142
156
|
|
|
143
|
-
1. Write your documentation in Markdown format
|
|
144
|
-
2. Run \`zengen build
|
|
145
|
-
3. Open the generated HTML files in your browser
|
|
157
|
+
1. Write your documentation in Markdown format in current directory
|
|
158
|
+
2. Run \`zengen build\`
|
|
159
|
+
3. Open the generated HTML files in your browser at .zen/dist
|
|
146
160
|
|
|
147
161
|
## Features
|
|
148
162
|
|
|
@@ -161,11 +175,9 @@ console.log('Hello ZEN!');
|
|
|
161
175
|
---
|
|
162
176
|
|
|
163
177
|
*Happy documenting!*`;
|
|
164
|
-
await fs.writeFile(path.join(targetDir, '
|
|
178
|
+
await fs.writeFile(path.join(targetDir, 'index.md'), exampleDoc, 'utf-8');
|
|
165
179
|
// 创建配置文件
|
|
166
180
|
const config = {
|
|
167
|
-
srcDir: './docs',
|
|
168
|
-
outDir: './dist',
|
|
169
181
|
template: undefined,
|
|
170
182
|
i18n: {
|
|
171
183
|
sourceLang: 'en-US',
|
|
@@ -180,9 +192,10 @@ console.log('Hello ZEN!');
|
|
|
180
192
|
if (!packageJson.scripts) {
|
|
181
193
|
packageJson.scripts = {};
|
|
182
194
|
}
|
|
183
|
-
packageJson.scripts.build = 'zengen build
|
|
184
|
-
packageJson.scripts['build:watch'] = 'zengen build
|
|
185
|
-
packageJson.scripts
|
|
195
|
+
packageJson.scripts.build = 'zengen build';
|
|
196
|
+
packageJson.scripts['build:watch'] = 'zengen build --watch';
|
|
197
|
+
packageJson.scripts['build:serve'] = 'zengen build --watch --serve';
|
|
198
|
+
packageJson.scripts.clean = 'zengen clean';
|
|
186
199
|
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
187
200
|
}
|
|
188
201
|
catch (error) {
|
|
@@ -191,9 +204,10 @@ console.log('Hello ZEN!');
|
|
|
191
204
|
name: 'zen-docs',
|
|
192
205
|
version: '1.0.0',
|
|
193
206
|
scripts: {
|
|
194
|
-
build: 'zengen build
|
|
195
|
-
'build:watch': 'zengen build
|
|
196
|
-
|
|
207
|
+
build: 'zengen build',
|
|
208
|
+
'build:watch': 'zengen build --watch',
|
|
209
|
+
'build:serve': 'zengen build --watch --serve',
|
|
210
|
+
clean: 'zengen clean'
|
|
197
211
|
}
|
|
198
212
|
};
|
|
199
213
|
await fs.writeFile(packageJsonPath, JSON.stringify(simplePackageJson, null, 2), 'utf-8');
|
|
@@ -202,14 +216,14 @@ console.log('Hello ZEN!');
|
|
|
202
216
|
🎉 ZEN project initialized successfully!
|
|
203
217
|
|
|
204
218
|
Next steps:
|
|
205
|
-
1. Add your Markdown files to the
|
|
206
|
-
2. Run 'npm run build' to generate the site
|
|
219
|
+
1. Add your Markdown files to the current directory
|
|
220
|
+
2. Run 'npm run build' to generate the site (output will be in .zen/dist)
|
|
207
221
|
3. Run 'npm run build:watch' for development with auto-reload
|
|
222
|
+
4. Run 'npm run build:serve' for development with auto-reload and HTTP server
|
|
208
223
|
|
|
209
224
|
Project structure:
|
|
210
225
|
${targetDir}/
|
|
211
|
-
├──
|
|
212
|
-
│ └── index.md # Example document
|
|
226
|
+
├── index.md # Example document (in current directory)
|
|
213
227
|
├── static/ # Static assets (images, CSS, JS)
|
|
214
228
|
├── zen.config.json # Configuration file
|
|
215
229
|
└── package.json # npm scripts
|
|
@@ -249,47 +263,16 @@ Commands:
|
|
|
249
263
|
info Show this information
|
|
250
264
|
|
|
251
265
|
Examples:
|
|
252
|
-
$ zengen build
|
|
253
|
-
$ zengen build
|
|
266
|
+
$ zengen build
|
|
267
|
+
$ zengen build --watch
|
|
268
|
+
$ zengen build --watch --serve
|
|
269
|
+
$ zengen build --watch --serve --port 8080
|
|
254
270
|
$ zengen init --dir ./my-docs
|
|
255
|
-
$ zengen clean
|
|
271
|
+
$ zengen clean
|
|
256
272
|
|
|
257
273
|
For more help, run: zengen --help
|
|
258
274
|
`);
|
|
259
275
|
});
|
|
260
|
-
// 默认命令(兼容旧格式)
|
|
261
|
-
program
|
|
262
|
-
.argument('[src-dir]', 'Source directory')
|
|
263
|
-
.option('-o, --out <dir>', 'Output directory')
|
|
264
|
-
.option('-t, --template <file>', 'Custom template file')
|
|
265
|
-
.option('-w, --watch', 'Watch for changes')
|
|
266
|
-
.option('-v, --verbose', 'Show detailed output')
|
|
267
|
-
.action(async (srcDir, options) => {
|
|
268
|
-
if (!srcDir) {
|
|
269
|
-
program.help();
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
try {
|
|
273
|
-
const builder = new builder_1.ZenBuilder();
|
|
274
|
-
const buildOptions = {
|
|
275
|
-
srcDir: path.resolve(srcDir),
|
|
276
|
-
outDir: path.resolve(options.out || 'dist'),
|
|
277
|
-
template: options.template ? path.resolve(options.template) : undefined,
|
|
278
|
-
watch: options.watch,
|
|
279
|
-
verbose: options.verbose
|
|
280
|
-
};
|
|
281
|
-
if (options.watch) {
|
|
282
|
-
await builder.watch(buildOptions);
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
await builder.build(buildOptions);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
console.error('❌ Build failed:', error);
|
|
290
|
-
process.exit(1);
|
|
291
|
-
}
|
|
292
|
-
});
|
|
293
276
|
// 错误处理
|
|
294
277
|
program.showHelpAfterError();
|
|
295
278
|
program.showSuggestionAfterError();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAuC;AAEvC,2CAA6B;AAC7B,gDAAkC;AAIlC,4BAA4B;AAC5B,uCAAuC;AACvC,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,CAAC,cAAc;AAChC,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;AAEzB,OAAO;AACP,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/markdown.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA0BtD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,UAAU,GAAE,iBAAiB,EAAO;IAIhD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiCpD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiB1D;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBhF;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA0BtD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAA2B;gBAEjC,UAAU,GAAE,iBAAiB,EAAO;IAIhD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAIhD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiCpD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiB1D;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBhF;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAoC7D"}
|
package/dist/markdown.js
CHANGED
|
@@ -183,6 +183,10 @@ class MarkdownConverter {
|
|
|
183
183
|
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
184
184
|
for (const entry of entries) {
|
|
185
185
|
const fullPath = path.join(currentPath, entry.name);
|
|
186
|
+
// 忽略 .zen 目录
|
|
187
|
+
if (entry.name === '.zen') {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
186
190
|
if (entry.isDirectory()) {
|
|
187
191
|
await scanDirectory(fullPath);
|
|
188
192
|
}
|
package/dist/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAgC;AAChC,gEAAgC;AAEhC,gDAAkC;AAClC,2CAA6B;AAC7B,2CAA6B;AAE7B,mCAAmC;AACnC,eAAM,CAAC,UAAU,CAAC;IAChB,SAAS,EAAE,UAAS,IAAY,EAAE,IAAY;QAC5C,IAAI,IAAI,IAAI,sBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,sBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,OAAO,sBAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,KAAK;CACN,CAAC,CAAC;AAEV,MAAa,iBAAiB;IAG5B,YAAY,aAAkC,EAAE;QAFxC,eAAU,GAAwB,EAAE,CAAC;QAG3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA4B;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QAItC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,YAAY;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEpE,UAAU;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1B,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,GAAG,eAAM,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAE3C,UAAU;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,GAAG,QAAQ;YACX,OAAO;YACP,IAAI;YACJ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAiB;QAClC,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7D,mBAAmB;gBACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,UAAkB,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAa;YACzB,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,IAAI;YACJ,GAAG;YACH,OAAO;SACR,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,KAAK,UAAU,aAAa,CAAC,WAAmB;YAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAE5C,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,YAAY;wBACZ,IAAI;wBACJ,GAAG;wBACH,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAgC;AAChC,gEAAgC;AAEhC,gDAAkC;AAClC,2CAA6B;AAC7B,2CAA6B;AAE7B,mCAAmC;AACnC,eAAM,CAAC,UAAU,CAAC;IAChB,SAAS,EAAE,UAAS,IAAY,EAAE,IAAY;QAC5C,IAAI,IAAI,IAAI,sBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,OAAO,sBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,0CAA0C,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,OAAO,sBAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACxC,CAAC;IACD,QAAQ,EAAE,KAAK;IACf,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK;IAClB,KAAK,EAAE,KAAK;CACN,CAAC,CAAC;AAEV,MAAa,iBAAiB;IAG5B,YAAY,aAAkC,EAAE;QAFxC,eAAU,GAAwB,EAAE,CAAC;QAG3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA4B;QACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe;QAItC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,YAAY;QACZ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAkB;QAC9B,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEpE,UAAU;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;gBAC1B,OAAO,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,IAAI,GAAG,eAAM,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAE3C,UAAU;QACV,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACpB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,GAAG,QAAQ;YACX,OAAO;YACP,IAAI;YACJ,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAiB;QAClC,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7D,mBAAmB;gBACnB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,UAAkB,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAa;YACzB,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,IAAI;YACJ,GAAG;YACH,OAAO;SACR,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,OAAe;QACpC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,KAAK,UAAU,aAAa,CAAC,WAAmB;YAC9C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEpD,aAAa;gBACb,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAE5C,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,YAAY;wBACZ,IAAI;wBACJ,GAAG;wBACH,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;CACF;AA5KD,8CA4KC"}
|
package/dist/navigation.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { NavigationItem, FileInfo } from './types';
|
|
2
2
|
export declare class NavigationGenerator {
|
|
3
|
+
private baseUrl;
|
|
4
|
+
constructor(baseUrl?: string);
|
|
5
|
+
/**
|
|
6
|
+
* 更新 baseUrl
|
|
7
|
+
*/
|
|
8
|
+
setBaseUrl(baseUrl: string): void;
|
|
3
9
|
/**
|
|
4
10
|
* 从文件信息生成导航结构
|
|
5
11
|
*/
|
|
@@ -8,6 +14,10 @@ export declare class NavigationGenerator {
|
|
|
8
14
|
* 将文件添加到导航树中
|
|
9
15
|
*/
|
|
10
16
|
private addFileToNavigation;
|
|
17
|
+
/**
|
|
18
|
+
* 生成带 baseUrl 的路径
|
|
19
|
+
*/
|
|
20
|
+
private generatePath;
|
|
11
21
|
/**
|
|
12
22
|
* 格式化标题(将连字符/下划线转换为空格并首字母大写)
|
|
13
23
|
*/
|
package/dist/navigation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,qBAAa,mBAAmB;IAC9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE;IAgB7C;;OAEG;IACH,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAW;IAIhC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE;IAgB7C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqD3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE;IAajD;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IA4BrF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAoB5D;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM;CAIlD"}
|
package/dist/navigation.js
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NavigationGenerator = void 0;
|
|
4
4
|
class NavigationGenerator {
|
|
5
|
+
constructor(baseUrl = '') {
|
|
6
|
+
this.baseUrl = baseUrl;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 更新 baseUrl
|
|
10
|
+
*/
|
|
11
|
+
setBaseUrl(baseUrl) {
|
|
12
|
+
this.baseUrl = baseUrl;
|
|
13
|
+
}
|
|
5
14
|
/**
|
|
6
15
|
* 从文件信息生成导航结构
|
|
7
16
|
*/
|
|
@@ -30,9 +39,10 @@ class NavigationGenerator {
|
|
|
30
39
|
// 生成标题(使用文件名或 metadata 中的标题)
|
|
31
40
|
const title = file.metadata?.title || this.formatTitle(displayName);
|
|
32
41
|
// 生成路径
|
|
33
|
-
const
|
|
42
|
+
const rawPath = isMarkdownFile
|
|
34
43
|
? `/${file.relativePath.replace(/\.md$/, '.html')}`
|
|
35
44
|
: `/${parts.slice(0, i + 1).join('/')}`;
|
|
45
|
+
const itemPath = this.generatePath(rawPath);
|
|
36
46
|
if (isLastPart) {
|
|
37
47
|
// 添加文件节点
|
|
38
48
|
currentLevel.push({
|
|
@@ -60,6 +70,18 @@ class NavigationGenerator {
|
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* 生成带 baseUrl 的路径
|
|
75
|
+
*/
|
|
76
|
+
generatePath(path) {
|
|
77
|
+
if (!this.baseUrl) {
|
|
78
|
+
return path;
|
|
79
|
+
}
|
|
80
|
+
// 确保 baseUrl 不以斜杠结尾,路径以斜杠开头
|
|
81
|
+
const cleanBaseUrl = this.baseUrl.replace(/\/$/, '');
|
|
82
|
+
const cleanPath = path.startsWith('/') ? path : `/${path}`;
|
|
83
|
+
return `${cleanBaseUrl}${cleanPath}`;
|
|
84
|
+
}
|
|
63
85
|
/**
|
|
64
86
|
* 格式化标题(将连字符/下划线转换为空格并首字母大写)
|
|
65
87
|
*/
|
|
@@ -80,7 +102,8 @@ class NavigationGenerator {
|
|
|
80
102
|
generateFlat(files) {
|
|
81
103
|
return files.map(file => {
|
|
82
104
|
const title = file.metadata?.title || this.formatTitle(file.name);
|
|
83
|
-
const
|
|
105
|
+
const rawPath = `/${file.relativePath.replace(/\.md$/, '.html')}`;
|
|
106
|
+
const itemPath = this.generatePath(rawPath);
|
|
84
107
|
return {
|
|
85
108
|
title,
|
|
86
109
|
path: itemPath
|
|
@@ -132,12 +155,13 @@ class NavigationGenerator {
|
|
|
132
155
|
/**
|
|
133
156
|
* 生成站点地图 XML
|
|
134
157
|
*/
|
|
135
|
-
generateSitemap(files, baseUrl
|
|
158
|
+
generateSitemap(files, baseUrl) {
|
|
159
|
+
const effectiveBaseUrl = baseUrl || this.baseUrl || 'https://example.com';
|
|
136
160
|
const urls = files.map(file => {
|
|
137
161
|
const path = `/${file.relativePath.replace(/\.md$/, '.html')}`;
|
|
138
162
|
const lastmod = file.metadata?.last_modified || file.metadata?.date || new Date().toISOString().split('T')[0];
|
|
139
163
|
return ` <url>
|
|
140
|
-
<loc>${
|
|
164
|
+
<loc>${effectiveBaseUrl}${path}</loc>
|
|
141
165
|
<lastmod>${lastmod}</lastmod>
|
|
142
166
|
<changefreq>weekly</changefreq>
|
|
143
167
|
<priority>0.8</priority>
|
package/dist/navigation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":";;;AAGA,MAAa,mBAAmB;
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ export interface BuildOptions {
|
|
|
4
4
|
template?: string;
|
|
5
5
|
watch?: boolean;
|
|
6
6
|
verbose?: boolean;
|
|
7
|
+
serve?: boolean;
|
|
8
|
+
port?: number;
|
|
9
|
+
host?: string;
|
|
10
|
+
baseUrl?: string;
|
|
7
11
|
}
|
|
8
12
|
export interface FileInfo {
|
|
9
13
|
path: string;
|
|
@@ -34,6 +38,7 @@ export interface ZenConfig {
|
|
|
34
38
|
srcDir?: string;
|
|
35
39
|
outDir?: string;
|
|
36
40
|
template?: string;
|
|
41
|
+
baseUrl?: string;
|
|
37
42
|
i18n?: {
|
|
38
43
|
sourceLang: string;
|
|
39
44
|
targetLangs: string[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zengen",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.32",
|
|
4
4
|
"description": "ZEN - A minimalist Markdown documentation site builder",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"zengen": "dist/cli.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
11
|
+
"build": "npx rimraf dist && tsc",
|
|
12
12
|
"dev": "ts-node src/cli.ts",
|
|
13
13
|
"test": "npm run test:types && npm run test:build && npm run test:cli",
|
|
14
14
|
"test:types": "tsc --noEmit",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"homepage": "https://github.com/zccz14/ZEN#readme",
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/chokidar": "^1.7.5",
|
|
37
|
+
"@types/express": "^5.0.6",
|
|
37
38
|
"@types/node": "^25.0.3",
|
|
38
39
|
"@types/yaml": "^1.9.6",
|
|
39
40
|
"ts-node": "^10.9.2",
|
|
@@ -42,6 +43,7 @@
|
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"chokidar": "^5.0.0",
|
|
44
45
|
"commander": "^14.0.2",
|
|
46
|
+
"express": "^4.21.2",
|
|
45
47
|
"highlight.js": "^11.11.1",
|
|
46
48
|
"marked": "^17.0.1",
|
|
47
49
|
"yaml": "^1.10.2"
|
package/src/builder.ts
CHANGED
|
@@ -5,6 +5,8 @@ import { NavigationGenerator } from './navigation';
|
|
|
5
5
|
import * as fs from 'fs/promises';
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import * as chokidar from 'chokidar';
|
|
8
|
+
import express from 'express';
|
|
9
|
+
import * as http from 'http';
|
|
8
10
|
|
|
9
11
|
export class ZenBuilder {
|
|
10
12
|
private markdownConverter: MarkdownConverter;
|
|
@@ -16,7 +18,7 @@ export class ZenBuilder {
|
|
|
16
18
|
this.config = config;
|
|
17
19
|
this.markdownConverter = new MarkdownConverter(config.processors || []);
|
|
18
20
|
this.templateEngine = new TemplateEngine();
|
|
19
|
-
this.navigationGenerator = new NavigationGenerator();
|
|
21
|
+
this.navigationGenerator = new NavigationGenerator(config.baseUrl);
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
/**
|
|
@@ -24,12 +26,14 @@ export class ZenBuilder {
|
|
|
24
26
|
*/
|
|
25
27
|
async build(options: BuildOptions): Promise<void> {
|
|
26
28
|
const startTime = Date.now();
|
|
27
|
-
const { srcDir, outDir, template, verbose = false } = options;
|
|
29
|
+
const { srcDir, outDir, template, verbose = false, baseUrl } = options;
|
|
28
30
|
|
|
29
31
|
if (verbose) {
|
|
30
32
|
console.log(`🚀 Starting ZEN build...`);
|
|
31
33
|
console.log(`📁 Source: ${srcDir}`);
|
|
32
34
|
console.log(`📁 Output: ${outDir}`);
|
|
35
|
+
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
36
|
+
console.log(`🔍 Verbose mode enabled`);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
39
|
// 验证源目录
|
|
@@ -53,6 +57,15 @@ export class ZenBuilder {
|
|
|
53
57
|
|
|
54
58
|
if (verbose) console.log(`✅ Found ${files.length} Markdown files`);
|
|
55
59
|
|
|
60
|
+
// 更新导航生成器的 baseUrl(优先使用命令行参数)
|
|
61
|
+
if (baseUrl !== undefined) {
|
|
62
|
+
if (verbose) console.log(`🔗 Using baseUrl: ${baseUrl}`);
|
|
63
|
+
this.navigationGenerator.setBaseUrl(baseUrl);
|
|
64
|
+
} else if (this.config.baseUrl) {
|
|
65
|
+
if (verbose) console.log(`🔗 Using config baseUrl: ${this.config.baseUrl}`);
|
|
66
|
+
this.navigationGenerator.setBaseUrl(this.config.baseUrl);
|
|
67
|
+
}
|
|
68
|
+
|
|
56
69
|
// 生成导航
|
|
57
70
|
if (verbose) console.log(`🗺️ Generating navigation...`);
|
|
58
71
|
const navigation = this.navigationGenerator.generate(files);
|
|
@@ -111,7 +124,7 @@ export class ZenBuilder {
|
|
|
111
124
|
* 监听文件变化并自动重建
|
|
112
125
|
*/
|
|
113
126
|
async watch(options: BuildOptions): Promise<void> {
|
|
114
|
-
const { srcDir, outDir, template, verbose = false } = options;
|
|
127
|
+
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost', baseUrl } = options;
|
|
115
128
|
|
|
116
129
|
console.log(`👀 Watching for changes in ${srcDir}...`);
|
|
117
130
|
console.log(`Press Ctrl+C to stop watching`);
|
|
@@ -119,9 +132,19 @@ export class ZenBuilder {
|
|
|
119
132
|
// 初始构建
|
|
120
133
|
await this.build(options);
|
|
121
134
|
|
|
122
|
-
//
|
|
135
|
+
// 启动 HTTP 服务器(如果启用)
|
|
136
|
+
let server: http.Server | null = null;
|
|
137
|
+
if (serve) {
|
|
138
|
+
server = await this.startHttpServer(outDir, port, host);
|
|
139
|
+
console.log(`🌐 HTTP server started at http://${host}:${port}`);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// 设置文件监听,忽略隐藏文件和 .zen 目录
|
|
123
143
|
const watcher = chokidar.watch(srcDir, {
|
|
124
|
-
ignored:
|
|
144
|
+
ignored: [
|
|
145
|
+
/(^|[\/\\])\../, // 忽略隐藏文件
|
|
146
|
+
/(^|[\/\\])\.zen($|[\/\\])/ // 忽略 .zen 目录
|
|
147
|
+
],
|
|
125
148
|
persistent: true,
|
|
126
149
|
ignoreInitial: true
|
|
127
150
|
});
|
|
@@ -189,7 +212,42 @@ export class ZenBuilder {
|
|
|
189
212
|
process.on('SIGINT', () => {
|
|
190
213
|
console.log(`\n👋 Stopping watcher...`);
|
|
191
214
|
watcher.close();
|
|
192
|
-
|
|
215
|
+
|
|
216
|
+
// 关闭 HTTP 服务器(如果存在)
|
|
217
|
+
if (server) {
|
|
218
|
+
console.log(`🌐 Stopping HTTP server...`);
|
|
219
|
+
server.close(() => {
|
|
220
|
+
console.log(`✅ HTTP server stopped`);
|
|
221
|
+
process.exit(0);
|
|
222
|
+
});
|
|
223
|
+
} else {
|
|
224
|
+
process.exit(0);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* 启动 HTTP 服务器
|
|
231
|
+
*/
|
|
232
|
+
private async startHttpServer(outDir: string, port: number, host: string): Promise<http.Server> {
|
|
233
|
+
return new Promise((resolve, reject) => {
|
|
234
|
+
const app = express();
|
|
235
|
+
|
|
236
|
+
// 提供静态文件服务
|
|
237
|
+
app.use(express.static(outDir));
|
|
238
|
+
|
|
239
|
+
// 处理 SPA 路由 - 所有未找到的路径返回 index.html
|
|
240
|
+
app.get('*', (req: express.Request, res: express.Response) => {
|
|
241
|
+
res.sendFile(path.join(outDir, 'index.html'));
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
const server = app.listen(port, host, () => {
|
|
245
|
+
resolve(server);
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
server.on('error', (error: Error) => {
|
|
249
|
+
reject(error);
|
|
250
|
+
});
|
|
193
251
|
});
|
|
194
252
|
}
|
|
195
253
|
|
|
@@ -198,7 +256,7 @@ export class ZenBuilder {
|
|
|
198
256
|
*/
|
|
199
257
|
private async generateSitemap(files: FileInfo[], outDir: string): Promise<void> {
|
|
200
258
|
try {
|
|
201
|
-
const sitemapXml = this.navigationGenerator.generateSitemap(files);
|
|
259
|
+
const sitemapXml = this.navigationGenerator.generateSitemap(files, this.config.baseUrl);
|
|
202
260
|
const sitemapPath = path.join(outDir, 'sitemap.xml');
|
|
203
261
|
await fs.writeFile(sitemapPath, sitemapXml, 'utf-8');
|
|
204
262
|
} catch (error) {
|