zengen 0.1.31 → 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 +5 -4
- package/.github/workflows/pages.yml +3 -50
- package/README.md +6 -71
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +22 -6
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +35 -79
- 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 +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/builder.ts +20 -6
- package/src/cli.ts +36 -81
- package/src/markdown.ts +5 -0
- package/src/navigation.ts +35 -4
- package/src/types.ts +2 -0
- package/test-build/test.md +1 -0
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
4. **构建 zengen**:构建本地 zengen 包
|
|
22
22
|
5. **安装 zengen**:将本地构建的 zengen 安装为全局工具
|
|
23
23
|
6. **测试 zengen CLI**:验证 CLI 工具正常工作
|
|
24
|
-
7. **构建文档站点**:使用 `
|
|
24
|
+
7. **构建文档站点**:使用 `cd demo/src && zengen build` 构建文档,输出到 `.zen/dist` 目录
|
|
25
25
|
7. **配置 Pages**:设置 GitHub Pages
|
|
26
26
|
8. **上传制品**:将构建的文档站点上传为 Pages 制品
|
|
27
27
|
9. **部署到 GitHub Pages**:自动部署到 GitHub Pages
|
|
@@ -50,7 +50,8 @@ echo "docs.example.com" > docs-dist/CNAME
|
|
|
50
50
|
当前使用的构建命令:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
|
|
53
|
+
cd demo/src
|
|
54
|
+
zengen build --clean --verbose
|
|
54
55
|
```
|
|
55
56
|
|
|
56
57
|
可用的选项:
|
|
@@ -73,12 +74,12 @@ zengen build demo/src --out docs-dist --clean --verbose
|
|
|
73
74
|
1. **检查 Node.js 版本**:确保使用支持的 Node.js 版本
|
|
74
75
|
2. **验证依赖安装**:确保 `npm ci` 成功执行
|
|
75
76
|
3. **检查构建输出**:查看 `zengen build` 的详细输出
|
|
76
|
-
4. **CLI
|
|
77
|
+
4. **CLI 输出目录问题**:ZEN 现在强制输出到 `.zen/dist` 目录,不再支持 `--out` 参数。
|
|
77
78
|
|
|
78
79
|
### 部署失败
|
|
79
80
|
|
|
80
81
|
1. **检查权限**:确保工作流程有正确的 Pages 写入权限
|
|
81
|
-
2. **验证制品**:确保
|
|
82
|
+
2. **验证制品**:确保 `.zen/dist` 目录包含有效的 HTML 文件
|
|
82
83
|
3. **查看日志**:检查 GitHub Actions 日志获取详细错误信息
|
|
83
84
|
|
|
84
85
|
### 文档未更新
|
|
@@ -46,57 +46,10 @@ jobs:
|
|
|
46
46
|
- name: Install dependencies
|
|
47
47
|
run: npm ci
|
|
48
48
|
|
|
49
|
-
- name: Build zengen package
|
|
50
|
-
run: npm run build
|
|
51
|
-
|
|
52
|
-
- name: Install zengen globally (from local build)
|
|
53
|
-
run: |
|
|
54
|
-
# 从本地构建安装 zengen
|
|
55
|
-
npm install -g .
|
|
56
|
-
# 验证安装
|
|
57
|
-
zengen --version
|
|
58
|
-
|
|
59
|
-
- name: Test zengen CLI
|
|
60
|
-
run: |
|
|
61
|
-
# 测试 CLI 命令
|
|
62
|
-
echo "Testing zengen CLI..."
|
|
63
|
-
zengen --help
|
|
64
|
-
zengen build --help
|
|
65
|
-
|
|
66
49
|
- name: Create documentation site
|
|
67
50
|
run: |
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
# 首先清理可能存在的旧输出(保留 dist 目录中的 CLI 文件)
|
|
72
|
-
rm -rf docs-dist
|
|
73
|
-
# 只删除 dist 目录中的 HTML 文件,保留 CLI 文件
|
|
74
|
-
find dist -name "*.html" -delete 2>/dev/null || true
|
|
75
|
-
find dist -name "*.json" -delete 2>/dev/null || true
|
|
76
|
-
find dist -name "*.xml" -delete 2>/dev/null || true
|
|
77
|
-
|
|
78
|
-
# 使用 zengen 构建
|
|
79
|
-
zengen build demo/src --out docs-dist --clean --verbose
|
|
80
|
-
|
|
81
|
-
# 检查构建结果
|
|
82
|
-
echo "Checking build output..."
|
|
83
|
-
if [ -d "docs-dist" ] && [ -f "docs-dist/index.html" ]; then
|
|
84
|
-
echo "✅ Build successful - docs-dist directory exists with index.html"
|
|
85
|
-
ls -la docs-dist/
|
|
86
|
-
else
|
|
87
|
-
echo "⚠️ Build may have output to dist directory instead"
|
|
88
|
-
if [ -d "dist" ] && [ -f "dist/index.html" ]; then
|
|
89
|
-
echo "Found output in dist directory, copying to docs-dist"
|
|
90
|
-
cp -r dist docs-dist
|
|
91
|
-
ls -la docs-dist/
|
|
92
|
-
else
|
|
93
|
-
echo "❌ Build failed - no output found"
|
|
94
|
-
exit 1
|
|
95
|
-
fi
|
|
96
|
-
fi
|
|
97
|
-
|
|
98
|
-
# 创建 CNAME 文件(如果需要自定义域名)
|
|
99
|
-
# echo "docs.example.com" > docs-dist/CNAME
|
|
51
|
+
cd demo/src
|
|
52
|
+
npx --no-install zengen build
|
|
100
53
|
|
|
101
54
|
- name: Setup Pages
|
|
102
55
|
uses: actions/configure-pages@v4
|
|
@@ -104,7 +57,7 @@ jobs:
|
|
|
104
57
|
- name: Upload artifact
|
|
105
58
|
uses: actions/upload-pages-artifact@v3
|
|
106
59
|
with:
|
|
107
|
-
path: './
|
|
60
|
+
path: './demo/src/.zen/dist'
|
|
108
61
|
|
|
109
62
|
deploy:
|
|
110
63
|
environment:
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ZEN - 简洁的 Markdown 文档站点构建工具
|
|
2
2
|
|
|
3
|
-
> 📖 **阅读提示**: 本 README
|
|
3
|
+
> 📖 **阅读提示**: 本 README 为中文版本。英文版本将由 AI 自动翻译生成。
|
|
4
4
|
|
|
5
5
|
## 项目初衷
|
|
6
6
|
|
|
@@ -51,12 +51,14 @@ zengen init
|
|
|
51
51
|
|
|
52
52
|
2. **构建文档站点**:
|
|
53
53
|
```bash
|
|
54
|
-
|
|
54
|
+
cd /path/to/your/markdown/files
|
|
55
|
+
zengen build
|
|
55
56
|
```
|
|
56
57
|
|
|
57
58
|
3. **实时预览(监听文件变化)**:
|
|
58
59
|
```bash
|
|
59
|
-
|
|
60
|
+
cd /path/to/your/markdown/files
|
|
61
|
+
zengen build --watch
|
|
60
62
|
```
|
|
61
63
|
|
|
62
64
|
4. **查看帮助**:
|
|
@@ -64,75 +66,8 @@ zengen build ./docs --watch
|
|
|
64
66
|
zengen --help
|
|
65
67
|
```
|
|
66
68
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
# ZEN - A minimalist Markdown documentation site builder
|
|
70
|
-
|
|
71
|
-
> 📖 **Reading Note**: This README uses separated Chinese/English layout. Chinese version is above, English version is below the separator line.
|
|
72
|
-
|
|
73
|
-
## Project Philosophy
|
|
74
|
-
|
|
75
|
-
### Return to Content
|
|
76
|
-
I enjoy contemplation, but don't want complex build tools, complicated documentation configurations, or intricate structures.
|
|
77
|
-
|
|
78
|
-
### Return to Native Language
|
|
79
|
-
Life is short, I use AI translation. Stay connected with the world.
|
|
80
|
-
|
|
81
|
-
## Core Features
|
|
82
|
-
|
|
83
|
-
1. **Static Site Generation**
|
|
84
|
-
- Build any folder containing Markdown files into a static HTML site
|
|
85
|
-
|
|
86
|
-
2. **Smart Navigation**
|
|
87
|
-
- Generate sitemap and navigation without preserving the original Markdown directory structure
|
|
88
|
-
|
|
89
|
-
3. **Incremental i18n Translation**
|
|
90
|
-
- Use LLM for incremental i18n translation, allowing users to write Markdown in their native language while supporting multilingual audiences
|
|
91
|
-
|
|
92
|
-
## Design Principles
|
|
93
|
-
|
|
94
|
-
- **Minimalism**: Minimum configuration, maximum flexibility
|
|
95
|
-
- **Content First**: Focus on writing, not tool configuration
|
|
96
|
-
- **AI Empowered**: Leverage AI for translation and content organization
|
|
97
|
-
- **Cross-Language**: Support multilingual content creation and presentation
|
|
98
|
-
|
|
99
|
-
## Quick Start
|
|
100
|
-
|
|
101
|
-
### Installation
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
npm install -g zengen
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Or install as a project dependency:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
npm install zengen
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Usage
|
|
114
|
-
|
|
115
|
-
1. **Initialize a project**:
|
|
116
|
-
```bash
|
|
117
|
-
zengen init
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
2. **Build documentation site**:
|
|
121
|
-
```bash
|
|
122
|
-
zengen build ./docs
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
3. **Live preview (watch for changes)**:
|
|
126
|
-
```bash
|
|
127
|
-
zengen build ./docs --watch
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
4. **View help**:
|
|
131
|
-
```bash
|
|
132
|
-
zengen --help
|
|
133
|
-
```
|
|
69
|
+
**注意**:ZEN 现在强制使用当前目录作为源目录,输出到 `.zen/dist` 目录。不再支持指定源目录和输出目录参数。
|
|
134
70
|
|
|
135
71
|
---
|
|
136
72
|
|
|
137
73
|
**ZEN** - 让文档回归本质,让写作回归宁静。
|
|
138
|
-
**ZEN** - Return documentation to its essence, return writing to tranquility.
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,SAAS,EAAE,MAAM,SAAS,CAAC;AAU5E,qBAAa,UAAU;IACrB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,SAAc;IAOlC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,SAAS,EAAE,MAAM,SAAS,CAAC;AAU5E,qBAAa,UAAU;IACrB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,SAAc;IAOlC;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGjD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAuGjD;;OAEG;YACW,eAAe;IAsB7B;;OAEG;YACW,eAAe;IAU7B;;OAEG;YACW,sBAAsB;IAUpC;;OAEG;YACW,gBAAgB;IA6B9B;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE;CAuB5C"}
|
package/dist/builder.js
CHANGED
|
@@ -50,18 +50,20 @@ class ZenBuilder {
|
|
|
50
50
|
this.config = config;
|
|
51
51
|
this.markdownConverter = new markdown_1.MarkdownConverter(config.processors || []);
|
|
52
52
|
this.templateEngine = new template_1.TemplateEngine();
|
|
53
|
-
this.navigationGenerator = new navigation_1.NavigationGenerator();
|
|
53
|
+
this.navigationGenerator = new navigation_1.NavigationGenerator(config.baseUrl);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* 构建文档站点
|
|
57
57
|
*/
|
|
58
58
|
async build(options) {
|
|
59
59
|
const startTime = Date.now();
|
|
60
|
-
const { srcDir, outDir, template, verbose = false } = options;
|
|
60
|
+
const { srcDir, outDir, template, verbose = false, baseUrl } = options;
|
|
61
61
|
if (verbose) {
|
|
62
62
|
console.log(`🚀 Starting ZEN build...`);
|
|
63
63
|
console.log(`📁 Source: ${srcDir}`);
|
|
64
64
|
console.log(`📁 Output: ${outDir}`);
|
|
65
|
+
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
66
|
+
console.log(`🔍 Verbose mode enabled`);
|
|
65
67
|
}
|
|
66
68
|
// 验证源目录
|
|
67
69
|
try {
|
|
@@ -82,6 +84,17 @@ class ZenBuilder {
|
|
|
82
84
|
}
|
|
83
85
|
if (verbose)
|
|
84
86
|
console.log(`✅ Found ${files.length} Markdown files`);
|
|
87
|
+
// 更新导航生成器的 baseUrl(优先使用命令行参数)
|
|
88
|
+
if (baseUrl !== undefined) {
|
|
89
|
+
if (verbose)
|
|
90
|
+
console.log(`🔗 Using baseUrl: ${baseUrl}`);
|
|
91
|
+
this.navigationGenerator.setBaseUrl(baseUrl);
|
|
92
|
+
}
|
|
93
|
+
else if (this.config.baseUrl) {
|
|
94
|
+
if (verbose)
|
|
95
|
+
console.log(`🔗 Using config baseUrl: ${this.config.baseUrl}`);
|
|
96
|
+
this.navigationGenerator.setBaseUrl(this.config.baseUrl);
|
|
97
|
+
}
|
|
85
98
|
// 生成导航
|
|
86
99
|
if (verbose)
|
|
87
100
|
console.log(`🗺️ Generating navigation...`);
|
|
@@ -134,7 +147,7 @@ class ZenBuilder {
|
|
|
134
147
|
* 监听文件变化并自动重建
|
|
135
148
|
*/
|
|
136
149
|
async watch(options) {
|
|
137
|
-
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost' } = options;
|
|
150
|
+
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost', baseUrl } = options;
|
|
138
151
|
console.log(`👀 Watching for changes in ${srcDir}...`);
|
|
139
152
|
console.log(`Press Ctrl+C to stop watching`);
|
|
140
153
|
// 初始构建
|
|
@@ -145,9 +158,12 @@ class ZenBuilder {
|
|
|
145
158
|
server = await this.startHttpServer(outDir, port, host);
|
|
146
159
|
console.log(`🌐 HTTP server started at http://${host}:${port}`);
|
|
147
160
|
}
|
|
148
|
-
//
|
|
161
|
+
// 设置文件监听,忽略隐藏文件和 .zen 目录
|
|
149
162
|
const watcher = chokidar.watch(srcDir, {
|
|
150
|
-
ignored:
|
|
163
|
+
ignored: [
|
|
164
|
+
/(^|[\/\\])\../, // 忽略隐藏文件
|
|
165
|
+
/(^|[\/\\])\.zen($|[\/\\])/ // 忽略 .zen 目录
|
|
166
|
+
],
|
|
151
167
|
persistent: true,
|
|
152
168
|
ignoreInitial: true
|
|
153
169
|
});
|
|
@@ -251,7 +267,7 @@ class ZenBuilder {
|
|
|
251
267
|
*/
|
|
252
268
|
async generateSitemap(files, outDir) {
|
|
253
269
|
try {
|
|
254
|
-
const sitemapXml = this.navigationGenerator.generateSitemap(files);
|
|
270
|
+
const sitemapXml = this.navigationGenerator.generateSitemap(files, this.config.baseUrl);
|
|
255
271
|
const sitemapPath = path.join(outDir, 'sitemap.xml');
|
|
256
272
|
await fs.writeFile(sitemapPath, sitemapXml, 'utf-8');
|
|
257
273
|
}
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -51,9 +51,7 @@ 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')
|
|
59
57
|
.option('-s, --serve', 'Start HTTP server for preview (requires --watch)')
|
|
@@ -61,8 +59,9 @@ program
|
|
|
61
59
|
.option('--host <host>', 'HTTP server host', 'localhost')
|
|
62
60
|
.option('-v, --verbose', 'Show detailed output')
|
|
63
61
|
.option('-c, --config <file>', 'Configuration file')
|
|
62
|
+
.option('--base-url <url>', 'Base URL for generated links (e.g., https://example.com/docs)')
|
|
64
63
|
.option('--clean', 'Clean output directory before building')
|
|
65
|
-
.action(async (
|
|
64
|
+
.action(async (options) => {
|
|
66
65
|
try {
|
|
67
66
|
// 加载配置文件
|
|
68
67
|
let config = {};
|
|
@@ -77,16 +76,20 @@ program
|
|
|
77
76
|
process.exit(1);
|
|
78
77
|
}
|
|
79
78
|
}
|
|
79
|
+
// 强制使用当前目录作为 src 目录,输出到 .zen/dist 目录
|
|
80
|
+
const currentDir = process.cwd();
|
|
81
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
80
82
|
// 合并命令行参数和配置
|
|
81
83
|
const buildOptions = {
|
|
82
|
-
srcDir:
|
|
83
|
-
outDir:
|
|
84
|
+
srcDir: currentDir,
|
|
85
|
+
outDir: outDir,
|
|
84
86
|
template: options.template ? path.resolve(options.template) : undefined,
|
|
85
87
|
watch: options.watch,
|
|
86
88
|
serve: options.serve,
|
|
87
89
|
port: parseInt(options.port, 10),
|
|
88
90
|
host: options.host,
|
|
89
|
-
verbose: options.verbose
|
|
91
|
+
verbose: options.verbose,
|
|
92
|
+
baseUrl: options.baseUrl || config.baseUrl
|
|
90
93
|
};
|
|
91
94
|
const builder = new builder_1.ZenBuilder(config);
|
|
92
95
|
// 验证配置
|
|
@@ -121,12 +124,13 @@ program
|
|
|
121
124
|
// 清理命令
|
|
122
125
|
program
|
|
123
126
|
.command('clean')
|
|
124
|
-
.description('Clean output directory')
|
|
125
|
-
.
|
|
126
|
-
.action(async (dir) => {
|
|
127
|
+
.description('Clean .zen/dist output directory')
|
|
128
|
+
.action(async () => {
|
|
127
129
|
try {
|
|
128
130
|
const builder = new builder_1.ZenBuilder();
|
|
129
|
-
|
|
131
|
+
const currentDir = process.cwd();
|
|
132
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
133
|
+
await builder.clean(outDir);
|
|
130
134
|
}
|
|
131
135
|
catch (error) {
|
|
132
136
|
console.error('❌ Clean failed:', error);
|
|
@@ -142,7 +146,6 @@ program
|
|
|
142
146
|
try {
|
|
143
147
|
const targetDir = path.resolve(options.dir);
|
|
144
148
|
// 创建目录结构
|
|
145
|
-
await fs.mkdir(path.join(targetDir, 'docs'), { recursive: true });
|
|
146
149
|
await fs.mkdir(path.join(targetDir, 'static'), { recursive: true });
|
|
147
150
|
// 创建示例文档
|
|
148
151
|
const exampleDoc = `# Welcome to ZEN
|
|
@@ -151,9 +154,9 @@ This is an example documentation page generated by ZEN.
|
|
|
151
154
|
|
|
152
155
|
## Getting Started
|
|
153
156
|
|
|
154
|
-
1. Write your documentation in Markdown format
|
|
155
|
-
2. Run \`zengen build
|
|
156
|
-
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
|
|
157
160
|
|
|
158
161
|
## Features
|
|
159
162
|
|
|
@@ -172,11 +175,9 @@ console.log('Hello ZEN!');
|
|
|
172
175
|
---
|
|
173
176
|
|
|
174
177
|
*Happy documenting!*`;
|
|
175
|
-
await fs.writeFile(path.join(targetDir, '
|
|
178
|
+
await fs.writeFile(path.join(targetDir, 'index.md'), exampleDoc, 'utf-8');
|
|
176
179
|
// 创建配置文件
|
|
177
180
|
const config = {
|
|
178
|
-
srcDir: './docs',
|
|
179
|
-
outDir: './dist',
|
|
180
181
|
template: undefined,
|
|
181
182
|
i18n: {
|
|
182
183
|
sourceLang: 'en-US',
|
|
@@ -191,10 +192,10 @@ console.log('Hello ZEN!');
|
|
|
191
192
|
if (!packageJson.scripts) {
|
|
192
193
|
packageJson.scripts = {};
|
|
193
194
|
}
|
|
194
|
-
packageJson.scripts.build = 'zengen build
|
|
195
|
-
packageJson.scripts['build:watch'] = 'zengen build
|
|
196
|
-
packageJson.scripts['build:serve'] = 'zengen build
|
|
197
|
-
packageJson.scripts.clean = 'zengen clean
|
|
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';
|
|
198
199
|
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
199
200
|
}
|
|
200
201
|
catch (error) {
|
|
@@ -203,10 +204,10 @@ console.log('Hello ZEN!');
|
|
|
203
204
|
name: 'zen-docs',
|
|
204
205
|
version: '1.0.0',
|
|
205
206
|
scripts: {
|
|
206
|
-
build: 'zengen build
|
|
207
|
-
'build:watch': 'zengen build
|
|
208
|
-
'build:serve': 'zengen build
|
|
209
|
-
clean: 'zengen clean
|
|
207
|
+
build: 'zengen build',
|
|
208
|
+
'build:watch': 'zengen build --watch',
|
|
209
|
+
'build:serve': 'zengen build --watch --serve',
|
|
210
|
+
clean: 'zengen clean'
|
|
210
211
|
}
|
|
211
212
|
};
|
|
212
213
|
await fs.writeFile(packageJsonPath, JSON.stringify(simplePackageJson, null, 2), 'utf-8');
|
|
@@ -215,15 +216,14 @@ console.log('Hello ZEN!');
|
|
|
215
216
|
🎉 ZEN project initialized successfully!
|
|
216
217
|
|
|
217
218
|
Next steps:
|
|
218
|
-
1. Add your Markdown files to the
|
|
219
|
-
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)
|
|
220
221
|
3. Run 'npm run build:watch' for development with auto-reload
|
|
221
222
|
4. Run 'npm run build:serve' for development with auto-reload and HTTP server
|
|
222
223
|
|
|
223
224
|
Project structure:
|
|
224
225
|
${targetDir}/
|
|
225
|
-
├──
|
|
226
|
-
│ └── index.md # Example document
|
|
226
|
+
├── index.md # Example document (in current directory)
|
|
227
227
|
├── static/ # Static assets (images, CSS, JS)
|
|
228
228
|
├── zen.config.json # Configuration file
|
|
229
229
|
└── package.json # npm scripts
|
|
@@ -263,60 +263,16 @@ Commands:
|
|
|
263
263
|
info Show this information
|
|
264
264
|
|
|
265
265
|
Examples:
|
|
266
|
-
$ zengen build
|
|
267
|
-
$ zengen build
|
|
268
|
-
$ zengen build
|
|
269
|
-
$ zengen build
|
|
266
|
+
$ zengen build
|
|
267
|
+
$ zengen build --watch
|
|
268
|
+
$ zengen build --watch --serve
|
|
269
|
+
$ zengen build --watch --serve --port 8080
|
|
270
270
|
$ zengen init --dir ./my-docs
|
|
271
|
-
$ zengen clean
|
|
271
|
+
$ zengen clean
|
|
272
272
|
|
|
273
273
|
For more help, run: zengen --help
|
|
274
274
|
`);
|
|
275
275
|
});
|
|
276
|
-
// 默认命令(兼容旧格式)
|
|
277
|
-
program
|
|
278
|
-
.argument('[src-dir]', 'Source directory')
|
|
279
|
-
.option('-o, --out <dir>', 'Output directory')
|
|
280
|
-
.option('-t, --template <file>', 'Custom template file')
|
|
281
|
-
.option('-w, --watch', 'Watch for changes')
|
|
282
|
-
.option('-s, --serve', 'Start HTTP server for preview (requires --watch)')
|
|
283
|
-
.option('-p, --port <number>', 'HTTP server port', '3000')
|
|
284
|
-
.option('--host <host>', 'HTTP server host', 'localhost')
|
|
285
|
-
.option('-v, --verbose', 'Show detailed output')
|
|
286
|
-
.action(async (srcDir, options) => {
|
|
287
|
-
if (!srcDir) {
|
|
288
|
-
program.help();
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
try {
|
|
292
|
-
const builder = new builder_1.ZenBuilder();
|
|
293
|
-
const buildOptions = {
|
|
294
|
-
srcDir: path.resolve(srcDir),
|
|
295
|
-
outDir: path.resolve(options.out || 'dist'),
|
|
296
|
-
template: options.template ? path.resolve(options.template) : undefined,
|
|
297
|
-
watch: options.watch,
|
|
298
|
-
serve: options.serve,
|
|
299
|
-
port: parseInt(options.port, 10),
|
|
300
|
-
host: options.host,
|
|
301
|
-
verbose: options.verbose
|
|
302
|
-
};
|
|
303
|
-
// 警告 --serve 选项需要 --watch 选项
|
|
304
|
-
if (options.serve && !options.watch) {
|
|
305
|
-
console.warn('⚠️ Warning: --serve option requires --watch option, ignoring --serve');
|
|
306
|
-
buildOptions.serve = false;
|
|
307
|
-
}
|
|
308
|
-
if (options.watch) {
|
|
309
|
-
await builder.watch(buildOptions);
|
|
310
|
-
}
|
|
311
|
-
else {
|
|
312
|
-
await builder.build(buildOptions);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
catch (error) {
|
|
316
|
-
console.error('❌ Build failed:', error);
|
|
317
|
-
process.exit(1);
|
|
318
|
-
}
|
|
319
|
-
});
|
|
320
276
|
// 错误处理
|
|
321
277
|
program.showHelpAfterError();
|
|
322
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":"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"}
|
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
|
@@ -7,6 +7,7 @@ export interface BuildOptions {
|
|
|
7
7
|
serve?: boolean;
|
|
8
8
|
port?: number;
|
|
9
9
|
host?: string;
|
|
10
|
+
baseUrl?: string;
|
|
10
11
|
}
|
|
11
12
|
export interface FileInfo {
|
|
12
13
|
path: string;
|
|
@@ -37,6 +38,7 @@ export interface ZenConfig {
|
|
|
37
38
|
srcDir?: string;
|
|
38
39
|
outDir?: string;
|
|
39
40
|
template?: string;
|
|
41
|
+
baseUrl?: string;
|
|
40
42
|
i18n?: {
|
|
41
43
|
sourceLang: string;
|
|
42
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;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,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",
|
package/src/builder.ts
CHANGED
|
@@ -18,7 +18,7 @@ export class ZenBuilder {
|
|
|
18
18
|
this.config = config;
|
|
19
19
|
this.markdownConverter = new MarkdownConverter(config.processors || []);
|
|
20
20
|
this.templateEngine = new TemplateEngine();
|
|
21
|
-
this.navigationGenerator = new NavigationGenerator();
|
|
21
|
+
this.navigationGenerator = new NavigationGenerator(config.baseUrl);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -26,12 +26,14 @@ export class ZenBuilder {
|
|
|
26
26
|
*/
|
|
27
27
|
async build(options: BuildOptions): Promise<void> {
|
|
28
28
|
const startTime = Date.now();
|
|
29
|
-
const { srcDir, outDir, template, verbose = false } = options;
|
|
29
|
+
const { srcDir, outDir, template, verbose = false, baseUrl } = options;
|
|
30
30
|
|
|
31
31
|
if (verbose) {
|
|
32
32
|
console.log(`🚀 Starting ZEN build...`);
|
|
33
33
|
console.log(`📁 Source: ${srcDir}`);
|
|
34
34
|
console.log(`📁 Output: ${outDir}`);
|
|
35
|
+
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
36
|
+
console.log(`🔍 Verbose mode enabled`);
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
// 验证源目录
|
|
@@ -55,6 +57,15 @@ export class ZenBuilder {
|
|
|
55
57
|
|
|
56
58
|
if (verbose) console.log(`✅ Found ${files.length} Markdown files`);
|
|
57
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
|
+
|
|
58
69
|
// 生成导航
|
|
59
70
|
if (verbose) console.log(`🗺️ Generating navigation...`);
|
|
60
71
|
const navigation = this.navigationGenerator.generate(files);
|
|
@@ -113,7 +124,7 @@ export class ZenBuilder {
|
|
|
113
124
|
* 监听文件变化并自动重建
|
|
114
125
|
*/
|
|
115
126
|
async watch(options: BuildOptions): Promise<void> {
|
|
116
|
-
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost' } = options;
|
|
127
|
+
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost', baseUrl } = options;
|
|
117
128
|
|
|
118
129
|
console.log(`👀 Watching for changes in ${srcDir}...`);
|
|
119
130
|
console.log(`Press Ctrl+C to stop watching`);
|
|
@@ -128,9 +139,12 @@ export class ZenBuilder {
|
|
|
128
139
|
console.log(`🌐 HTTP server started at http://${host}:${port}`);
|
|
129
140
|
}
|
|
130
141
|
|
|
131
|
-
//
|
|
142
|
+
// 设置文件监听,忽略隐藏文件和 .zen 目录
|
|
132
143
|
const watcher = chokidar.watch(srcDir, {
|
|
133
|
-
ignored:
|
|
144
|
+
ignored: [
|
|
145
|
+
/(^|[\/\\])\../, // 忽略隐藏文件
|
|
146
|
+
/(^|[\/\\])\.zen($|[\/\\])/ // 忽略 .zen 目录
|
|
147
|
+
],
|
|
134
148
|
persistent: true,
|
|
135
149
|
ignoreInitial: true
|
|
136
150
|
});
|
|
@@ -242,7 +256,7 @@ export class ZenBuilder {
|
|
|
242
256
|
*/
|
|
243
257
|
private async generateSitemap(files: FileInfo[], outDir: string): Promise<void> {
|
|
244
258
|
try {
|
|
245
|
-
const sitemapXml = this.navigationGenerator.generateSitemap(files);
|
|
259
|
+
const sitemapXml = this.navigationGenerator.generateSitemap(files, this.config.baseUrl);
|
|
246
260
|
const sitemapPath = path.join(outDir, 'sitemap.xml');
|
|
247
261
|
await fs.writeFile(sitemapPath, sitemapXml, 'utf-8');
|
|
248
262
|
} catch (error) {
|
package/src/cli.ts
CHANGED
|
@@ -24,9 +24,7 @@ program
|
|
|
24
24
|
// 构建命令
|
|
25
25
|
program
|
|
26
26
|
.command('build')
|
|
27
|
-
.description('Build documentation site from Markdown files')
|
|
28
|
-
.argument('<src-dir>', 'Source directory containing Markdown files')
|
|
29
|
-
.option('-o, --out <dir>', 'Output directory for generated HTML', 'dist')
|
|
27
|
+
.description('Build documentation site from Markdown files in current directory')
|
|
30
28
|
.option('-t, --template <file>', 'Custom template file')
|
|
31
29
|
.option('-w, --watch', 'Watch for changes and rebuild automatically')
|
|
32
30
|
.option('-s, --serve', 'Start HTTP server for preview (requires --watch)')
|
|
@@ -34,8 +32,9 @@ program
|
|
|
34
32
|
.option('--host <host>', 'HTTP server host', 'localhost')
|
|
35
33
|
.option('-v, --verbose', 'Show detailed output')
|
|
36
34
|
.option('-c, --config <file>', 'Configuration file')
|
|
35
|
+
.option('--base-url <url>', 'Base URL for generated links (e.g., https://example.com/docs)')
|
|
37
36
|
.option('--clean', 'Clean output directory before building')
|
|
38
|
-
.action(async (
|
|
37
|
+
.action(async (options) => {
|
|
39
38
|
try {
|
|
40
39
|
// 加载配置文件
|
|
41
40
|
let config: ZenConfig = {};
|
|
@@ -50,16 +49,21 @@ program
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
|
|
52
|
+
// 强制使用当前目录作为 src 目录,输出到 .zen/dist 目录
|
|
53
|
+
const currentDir = process.cwd();
|
|
54
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
55
|
+
|
|
53
56
|
// 合并命令行参数和配置
|
|
54
57
|
const buildOptions = {
|
|
55
|
-
srcDir:
|
|
56
|
-
outDir:
|
|
58
|
+
srcDir: currentDir,
|
|
59
|
+
outDir: outDir,
|
|
57
60
|
template: options.template ? path.resolve(options.template) : undefined,
|
|
58
61
|
watch: options.watch,
|
|
59
62
|
serve: options.serve,
|
|
60
63
|
port: parseInt(options.port, 10),
|
|
61
64
|
host: options.host,
|
|
62
|
-
verbose: options.verbose
|
|
65
|
+
verbose: options.verbose,
|
|
66
|
+
baseUrl: options.baseUrl || config.baseUrl
|
|
63
67
|
};
|
|
64
68
|
|
|
65
69
|
|
|
@@ -99,12 +103,13 @@ program
|
|
|
99
103
|
// 清理命令
|
|
100
104
|
program
|
|
101
105
|
.command('clean')
|
|
102
|
-
.description('Clean output directory')
|
|
103
|
-
.
|
|
104
|
-
.action(async (dir) => {
|
|
106
|
+
.description('Clean .zen/dist output directory')
|
|
107
|
+
.action(async () => {
|
|
105
108
|
try {
|
|
106
109
|
const builder = new ZenBuilder();
|
|
107
|
-
|
|
110
|
+
const currentDir = process.cwd();
|
|
111
|
+
const outDir = path.join(currentDir, '.zen', 'dist');
|
|
112
|
+
await builder.clean(outDir);
|
|
108
113
|
} catch (error) {
|
|
109
114
|
console.error('❌ Clean failed:', error);
|
|
110
115
|
process.exit(1);
|
|
@@ -121,7 +126,6 @@ program
|
|
|
121
126
|
const targetDir = path.resolve(options.dir);
|
|
122
127
|
|
|
123
128
|
// 创建目录结构
|
|
124
|
-
await fs.mkdir(path.join(targetDir, 'docs'), { recursive: true });
|
|
125
129
|
await fs.mkdir(path.join(targetDir, 'static'), { recursive: true });
|
|
126
130
|
|
|
127
131
|
// 创建示例文档
|
|
@@ -131,9 +135,9 @@ This is an example documentation page generated by ZEN.
|
|
|
131
135
|
|
|
132
136
|
## Getting Started
|
|
133
137
|
|
|
134
|
-
1. Write your documentation in Markdown format
|
|
135
|
-
2. Run \`zengen build
|
|
136
|
-
3. Open the generated HTML files in your browser
|
|
138
|
+
1. Write your documentation in Markdown format in current directory
|
|
139
|
+
2. Run \`zengen build\`
|
|
140
|
+
3. Open the generated HTML files in your browser at .zen/dist
|
|
137
141
|
|
|
138
142
|
## Features
|
|
139
143
|
|
|
@@ -154,15 +158,13 @@ console.log('Hello ZEN!');
|
|
|
154
158
|
*Happy documenting!*`;
|
|
155
159
|
|
|
156
160
|
await fs.writeFile(
|
|
157
|
-
path.join(targetDir, '
|
|
161
|
+
path.join(targetDir, 'index.md'),
|
|
158
162
|
exampleDoc,
|
|
159
163
|
'utf-8'
|
|
160
164
|
);
|
|
161
165
|
|
|
162
166
|
// 创建配置文件
|
|
163
167
|
const config = {
|
|
164
|
-
srcDir: './docs',
|
|
165
|
-
outDir: './dist',
|
|
166
168
|
template: undefined,
|
|
167
169
|
i18n: {
|
|
168
170
|
sourceLang: 'en-US',
|
|
@@ -185,10 +187,10 @@ console.log('Hello ZEN!');
|
|
|
185
187
|
packageJson.scripts = {};
|
|
186
188
|
}
|
|
187
189
|
|
|
188
|
-
packageJson.scripts.build = 'zengen build
|
|
189
|
-
packageJson.scripts['build:watch'] = 'zengen build
|
|
190
|
-
packageJson.scripts['build:serve'] = 'zengen build
|
|
191
|
-
packageJson.scripts.clean = 'zengen clean
|
|
190
|
+
packageJson.scripts.build = 'zengen build';
|
|
191
|
+
packageJson.scripts['build:watch'] = 'zengen build --watch';
|
|
192
|
+
packageJson.scripts['build:serve'] = 'zengen build --watch --serve';
|
|
193
|
+
packageJson.scripts.clean = 'zengen clean';
|
|
192
194
|
|
|
193
195
|
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
194
196
|
} catch (error) {
|
|
@@ -197,10 +199,10 @@ console.log('Hello ZEN!');
|
|
|
197
199
|
name: 'zen-docs',
|
|
198
200
|
version: '1.0.0',
|
|
199
201
|
scripts: {
|
|
200
|
-
build: 'zengen build
|
|
201
|
-
'build:watch': 'zengen build
|
|
202
|
-
'build:serve': 'zengen build
|
|
203
|
-
clean: 'zengen clean
|
|
202
|
+
build: 'zengen build',
|
|
203
|
+
'build:watch': 'zengen build --watch',
|
|
204
|
+
'build:serve': 'zengen build --watch --serve',
|
|
205
|
+
clean: 'zengen clean'
|
|
204
206
|
}
|
|
205
207
|
};
|
|
206
208
|
|
|
@@ -215,15 +217,14 @@ console.log('Hello ZEN!');
|
|
|
215
217
|
🎉 ZEN project initialized successfully!
|
|
216
218
|
|
|
217
219
|
Next steps:
|
|
218
|
-
1. Add your Markdown files to the
|
|
219
|
-
2. Run 'npm run build' to generate the site
|
|
220
|
+
1. Add your Markdown files to the current directory
|
|
221
|
+
2. Run 'npm run build' to generate the site (output will be in .zen/dist)
|
|
220
222
|
3. Run 'npm run build:watch' for development with auto-reload
|
|
221
223
|
4. Run 'npm run build:serve' for development with auto-reload and HTTP server
|
|
222
224
|
|
|
223
225
|
Project structure:
|
|
224
226
|
${targetDir}/
|
|
225
|
-
├──
|
|
226
|
-
│ └── index.md # Example document
|
|
227
|
+
├── index.md # Example document (in current directory)
|
|
227
228
|
├── static/ # Static assets (images, CSS, JS)
|
|
228
229
|
├── zen.config.json # Configuration file
|
|
229
230
|
└── package.json # npm scripts
|
|
@@ -263,63 +264,17 @@ Commands:
|
|
|
263
264
|
info Show this information
|
|
264
265
|
|
|
265
266
|
Examples:
|
|
266
|
-
$ zengen build
|
|
267
|
-
$ zengen build
|
|
268
|
-
$ zengen build
|
|
269
|
-
$ zengen build
|
|
267
|
+
$ zengen build
|
|
268
|
+
$ zengen build --watch
|
|
269
|
+
$ zengen build --watch --serve
|
|
270
|
+
$ zengen build --watch --serve --port 8080
|
|
270
271
|
$ zengen init --dir ./my-docs
|
|
271
|
-
$ zengen clean
|
|
272
|
+
$ zengen clean
|
|
272
273
|
|
|
273
274
|
For more help, run: zengen --help
|
|
274
275
|
`);
|
|
275
276
|
});
|
|
276
277
|
|
|
277
|
-
// 默认命令(兼容旧格式)
|
|
278
|
-
program
|
|
279
|
-
.argument('[src-dir]', 'Source directory')
|
|
280
|
-
.option('-o, --out <dir>', 'Output directory')
|
|
281
|
-
.option('-t, --template <file>', 'Custom template file')
|
|
282
|
-
.option('-w, --watch', 'Watch for changes')
|
|
283
|
-
.option('-s, --serve', 'Start HTTP server for preview (requires --watch)')
|
|
284
|
-
.option('-p, --port <number>', 'HTTP server port', '3000')
|
|
285
|
-
.option('--host <host>', 'HTTP server host', 'localhost')
|
|
286
|
-
.option('-v, --verbose', 'Show detailed output')
|
|
287
|
-
.action(async (srcDir, options) => {
|
|
288
|
-
if (!srcDir) {
|
|
289
|
-
program.help();
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
try {
|
|
294
|
-
const builder = new ZenBuilder();
|
|
295
|
-
|
|
296
|
-
const buildOptions = {
|
|
297
|
-
srcDir: path.resolve(srcDir),
|
|
298
|
-
outDir: path.resolve(options.out || 'dist'),
|
|
299
|
-
template: options.template ? path.resolve(options.template) : undefined,
|
|
300
|
-
watch: options.watch,
|
|
301
|
-
serve: options.serve,
|
|
302
|
-
port: parseInt(options.port, 10),
|
|
303
|
-
host: options.host,
|
|
304
|
-
verbose: options.verbose
|
|
305
|
-
};
|
|
306
|
-
|
|
307
|
-
// 警告 --serve 选项需要 --watch 选项
|
|
308
|
-
if (options.serve && !options.watch) {
|
|
309
|
-
console.warn('⚠️ Warning: --serve option requires --watch option, ignoring --serve');
|
|
310
|
-
buildOptions.serve = false;
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
if (options.watch) {
|
|
314
|
-
await builder.watch(buildOptions);
|
|
315
|
-
} else {
|
|
316
|
-
await builder.build(buildOptions);
|
|
317
|
-
}
|
|
318
|
-
} catch (error) {
|
|
319
|
-
console.error('❌ Build failed:', error);
|
|
320
|
-
process.exit(1);
|
|
321
|
-
}
|
|
322
|
-
});
|
|
323
278
|
|
|
324
279
|
// 错误处理
|
|
325
280
|
program.showHelpAfterError();
|
package/src/markdown.ts
CHANGED
|
@@ -171,6 +171,11 @@ export class MarkdownConverter {
|
|
|
171
171
|
for (const entry of entries) {
|
|
172
172
|
const fullPath = path.join(currentPath, entry.name);
|
|
173
173
|
|
|
174
|
+
// 忽略 .zen 目录
|
|
175
|
+
if (entry.name === '.zen') {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
|
|
174
179
|
if (entry.isDirectory()) {
|
|
175
180
|
await scanDirectory(fullPath);
|
|
176
181
|
} else if (entry.isFile() && entry.name.endsWith('.md')) {
|
package/src/navigation.ts
CHANGED
|
@@ -2,6 +2,19 @@ import { NavigationItem, FileInfo } from './types';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
|
|
4
4
|
export class NavigationGenerator {
|
|
5
|
+
private baseUrl: string;
|
|
6
|
+
|
|
7
|
+
constructor(baseUrl: string = '') {
|
|
8
|
+
this.baseUrl = baseUrl;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 更新 baseUrl
|
|
13
|
+
*/
|
|
14
|
+
setBaseUrl(baseUrl: string): void {
|
|
15
|
+
this.baseUrl = baseUrl;
|
|
16
|
+
}
|
|
17
|
+
|
|
5
18
|
/**
|
|
6
19
|
* 从文件信息生成导航结构
|
|
7
20
|
*/
|
|
@@ -40,9 +53,10 @@ export class NavigationGenerator {
|
|
|
40
53
|
const title = file.metadata?.title || this.formatTitle(displayName);
|
|
41
54
|
|
|
42
55
|
// 生成路径
|
|
43
|
-
const
|
|
56
|
+
const rawPath = isMarkdownFile
|
|
44
57
|
? `/${file.relativePath.replace(/\.md$/, '.html')}`
|
|
45
58
|
: `/${parts.slice(0, i + 1).join('/')}`;
|
|
59
|
+
const itemPath = this.generatePath(rawPath);
|
|
46
60
|
|
|
47
61
|
if (isLastPart) {
|
|
48
62
|
// 添加文件节点
|
|
@@ -76,6 +90,21 @@ export class NavigationGenerator {
|
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
92
|
|
|
93
|
+
/**
|
|
94
|
+
* 生成带 baseUrl 的路径
|
|
95
|
+
*/
|
|
96
|
+
private generatePath(path: string): string {
|
|
97
|
+
if (!this.baseUrl) {
|
|
98
|
+
return path;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 确保 baseUrl 不以斜杠结尾,路径以斜杠开头
|
|
102
|
+
const cleanBaseUrl = this.baseUrl.replace(/\/$/, '');
|
|
103
|
+
const cleanPath = path.startsWith('/') ? path : `/${path}`;
|
|
104
|
+
|
|
105
|
+
return `${cleanBaseUrl}${cleanPath}`;
|
|
106
|
+
}
|
|
107
|
+
|
|
79
108
|
/**
|
|
80
109
|
* 格式化标题(将连字符/下划线转换为空格并首字母大写)
|
|
81
110
|
*/
|
|
@@ -99,7 +128,8 @@ export class NavigationGenerator {
|
|
|
99
128
|
generateFlat(files: FileInfo[]): NavigationItem[] {
|
|
100
129
|
return files.map(file => {
|
|
101
130
|
const title = file.metadata?.title || this.formatTitle(file.name);
|
|
102
|
-
const
|
|
131
|
+
const rawPath = `/${file.relativePath.replace(/\.md$/, '.html')}`;
|
|
132
|
+
const itemPath = this.generatePath(rawPath);
|
|
103
133
|
|
|
104
134
|
return {
|
|
105
135
|
title,
|
|
@@ -162,13 +192,14 @@ export class NavigationGenerator {
|
|
|
162
192
|
/**
|
|
163
193
|
* 生成站点地图 XML
|
|
164
194
|
*/
|
|
165
|
-
generateSitemap(files: FileInfo[], baseUrl
|
|
195
|
+
generateSitemap(files: FileInfo[], baseUrl?: string): string {
|
|
196
|
+
const effectiveBaseUrl = baseUrl || this.baseUrl || 'https://example.com';
|
|
166
197
|
const urls = files.map(file => {
|
|
167
198
|
const path = `/${file.relativePath.replace(/\.md$/, '.html')}`;
|
|
168
199
|
const lastmod = file.metadata?.last_modified || file.metadata?.date || new Date().toISOString().split('T')[0];
|
|
169
200
|
|
|
170
201
|
return ` <url>
|
|
171
|
-
<loc>${
|
|
202
|
+
<loc>${effectiveBaseUrl}${path}</loc>
|
|
172
203
|
<lastmod>${lastmod}</lastmod>
|
|
173
204
|
<changefreq>weekly</changefreq>
|
|
174
205
|
<priority>0.8</priority>
|
package/src/types.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface BuildOptions {
|
|
|
7
7
|
serve?: boolean;
|
|
8
8
|
port?: number;
|
|
9
9
|
host?: string;
|
|
10
|
+
baseUrl?: string;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export interface FileInfo {
|
|
@@ -42,6 +43,7 @@ export interface ZenConfig {
|
|
|
42
43
|
srcDir?: string;
|
|
43
44
|
outDir?: string;
|
|
44
45
|
template?: string;
|
|
46
|
+
baseUrl?: string;
|
|
45
47
|
i18n?: {
|
|
46
48
|
sourceLang: string;
|
|
47
49
|
targetLangs: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Test Document
|