zengen 0.1.35 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/bump-version.yml +112 -0
- package/.github/workflows/ci.yml +2 -2
- package/.github/workflows/pages.yml +1 -7
- package/.zen/meta.json +155 -0
- package/.zen/src/en-US/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +120 -0
- package/.zen/src/en-US/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +75 -0
- package/.zen/src/en-US/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +189 -0
- package/.zen/src/en-US/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +53 -0
- package/.zen/src/en-US/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +11 -0
- package/.zen/src/en-US/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +61 -0
- package/.zen/src/en-US/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +41 -0
- package/.zen/src/en-US/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +65 -0
- package/.zen/src/zh-Hans/01d04f7c17b4a541ead9d759d877b30b403e15b849182a49eb1f62bd29ecd18c.md +120 -0
- package/.zen/src/zh-Hans/1b798c44a4f353e47296ca83d5905e37e6aba3e90bbd9bc3b3d34fc12059a2ca.md +77 -0
- package/.zen/src/zh-Hans/1e96be58d76c60056b708eb5bd8b8b81d7b5845d9cfe0b879d85068a5f11df3a.md +189 -0
- package/.zen/src/zh-Hans/5ec990146b35e00de2630559126ee07f7cdcddeb23b0e8cab3d85b4181353e26.md +55 -0
- package/.zen/src/zh-Hans/6124ea88edec5bde737b26b21f71ecfeffe4e73151784856edf813ee231a4baa.md +1 -0
- package/.zen/src/zh-Hans/6ad8db715a1b60613fe934fefb29fa981ecad9b63145593accff144d73b44bde.md +175 -0
- package/.zen/src/zh-Hans/80ae9bed74fc6348a7c1fe9f33e86b65f5d919169721f77bcf0e1bc29fbdb4f9.md +63 -0
- package/.zen/src/zh-Hans/a1580f71c6c6c1ff4a314be72d410a8507af2f087d56360c7f5048d349c21953.md +48 -0
- package/.zen/src/zh-Hans/d49012f98c4367b34034063400e2f7826bf0615952210c82396920172d468e2c.md +107 -0
- package/.zen/src/zh-Hans/f0c2799126931ccd113a0c45b1e623870b0d4f4f400becf6dd877da8f1011517.md +41 -0
- package/.zen/src/zh-Hans/fdfca9b960d0eaa8b2b96fe988ead7481d2c0b16f66ebc94fb477139b4178cdc.md +65 -0
- package/assets/templates/default/layout.html +274 -0
- package/dist/ai/extractMetadataFromMarkdown.d.ts +8 -0
- package/dist/ai/extractMetadataFromMarkdown.d.ts.map +1 -0
- package/dist/ai/extractMetadataFromMarkdown.js +88 -0
- package/dist/ai/extractMetadataFromMarkdown.js.map +1 -0
- package/dist/ai/translateMarkdown.d.ts +8 -0
- package/dist/ai/translateMarkdown.d.ts.map +1 -0
- package/dist/ai/translateMarkdown.js +29 -0
- package/dist/ai/translateMarkdown.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 +218 -0
- package/dist/build/pipeline.js.map +1 -0
- package/dist/cli.js +17 -83
- package/dist/cli.js.map +1 -1
- package/dist/findEntries.d.ts +10 -0
- package/dist/findEntries.d.ts.map +1 -0
- package/dist/findEntries.js +38 -0
- package/dist/findEntries.js.map +1 -0
- package/dist/index.d.ts +1 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -35
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +14 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +78 -0
- package/dist/metadata.js.map +1 -0
- package/dist/paths.d.ts +6 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -0
- package/dist/process/extractMetadataByAI.d.ts +5 -0
- package/dist/process/extractMetadataByAI.d.ts.map +1 -0
- package/dist/process/extractMetadataByAI.js +31 -0
- package/dist/process/extractMetadataByAI.js.map +1 -0
- package/dist/process/template.d.ts +5 -0
- package/dist/process/template.d.ts.map +1 -0
- package/dist/process/template.js +188 -0
- package/dist/process/template.js.map +1 -0
- package/dist/scan/files.d.ts +7 -0
- package/dist/scan/files.d.ts.map +1 -0
- package/dist/scan/files.js +54 -0
- package/dist/scan/files.js.map +1 -0
- package/dist/services/openai.d.ts +41 -0
- package/dist/services/openai.d.ts.map +1 -0
- package/dist/services/openai.js +54 -0
- package/dist/services/openai.js.map +1 -0
- package/dist/types.d.ts +26 -46
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/convertMarkdownToHtml.d.ts +7 -0
- package/dist/utils/convertMarkdownToHtml.d.ts.map +1 -0
- package/dist/utils/convertMarkdownToHtml.js +39 -0
- package/dist/utils/convertMarkdownToHtml.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +6 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +22 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/docs/advanced-usage.md +39 -0
- package/docs/deployment/github-pages.md +1 -2
- package/docs/getting-started.md +26 -0
- package/docs/guides/best-practices.md +4 -117
- package/docs/guides/config.md +0 -238
- package/package.json +5 -2
- package/src/ai/extractMetadataFromMarkdown.ts +95 -0
- package/src/ai/translateMarkdown.ts +29 -0
- package/src/build/pipeline.ts +211 -0
- package/src/cli.ts +18 -94
- package/src/findEntries.ts +37 -0
- package/src/index.ts +1 -40
- package/src/metadata.ts +44 -0
- package/src/paths.ts +7 -0
- package/src/process/extractMetadataByAI.ts +29 -0
- package/src/process/template.ts +201 -0
- package/src/scan/files.ts +17 -0
- package/src/services/openai.ts +92 -0
- package/src/types.ts +29 -47
- package/src/utils/convertMarkdownToHtml.ts +32 -0
- package/src/utils/frontmatter.ts +18 -0
- package/test-multilang.js +44 -0
- package/dist/builder.d.ts +0 -46
- package/dist/builder.d.ts.map +0 -1
- package/dist/builder.js +0 -443
- package/dist/builder.js.map +0 -1
- package/dist/gitignore.d.ts +0 -40
- package/dist/gitignore.d.ts.map +0 -1
- package/dist/gitignore.js +0 -184
- package/dist/gitignore.js.map +0 -1
- package/dist/gitignore.test.d.ts +0 -2
- package/dist/gitignore.test.d.ts.map +0 -1
- package/dist/gitignore.test.js +0 -244
- package/dist/gitignore.test.js.map +0 -1
- package/dist/markdown.d.ts +0 -30
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js +0 -199
- package/dist/markdown.js.map +0 -1
- package/dist/navigation.d.ts +0 -46
- package/dist/navigation.d.ts.map +0 -1
- package/dist/navigation.js +0 -196
- package/dist/navigation.js.map +0 -1
- package/dist/template.d.ts +0 -29
- package/dist/template.d.ts.map +0 -1
- package/dist/template.js +0 -385
- package/dist/template.js.map +0 -1
- package/docs/ci/github-ci-cd.md +0 -127
- package/docs/guides/api.md +0 -277
- package/src/builder.ts +0 -458
- package/src/gitignore.test.ts +0 -253
- package/src/gitignore.ts +0 -173
- package/src/markdown.ts +0 -184
- package/src/navigation.ts +0 -237
- package/src/template.ts +0 -365
package/dist/builder.js
DELETED
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.ZenBuilder = void 0;
|
|
40
|
-
const markdown_1 = require("./markdown");
|
|
41
|
-
const template_1 = require("./template");
|
|
42
|
-
const navigation_1 = require("./navigation");
|
|
43
|
-
const gitignore_1 = require("./gitignore");
|
|
44
|
-
const fs = __importStar(require("fs/promises"));
|
|
45
|
-
const path = __importStar(require("path"));
|
|
46
|
-
const chokidar = __importStar(require("chokidar"));
|
|
47
|
-
const express_1 = __importDefault(require("express"));
|
|
48
|
-
class ZenBuilder {
|
|
49
|
-
constructor(config = {}) {
|
|
50
|
-
this.config = {};
|
|
51
|
-
this.config = config;
|
|
52
|
-
this.markdownConverter = new markdown_1.MarkdownConverter(config.processors || []);
|
|
53
|
-
this.templateEngine = new template_1.TemplateEngine();
|
|
54
|
-
this.navigationGenerator = new navigation_1.NavigationGenerator(config.baseUrl);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* 构建文档站点
|
|
58
|
-
*/
|
|
59
|
-
async build(options) {
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
const { srcDir, outDir, template, verbose = false, baseUrl } = options;
|
|
62
|
-
if (verbose) {
|
|
63
|
-
console.log(`🚀 Starting ZEN build...`);
|
|
64
|
-
console.log(`📁 Source: ${srcDir}`);
|
|
65
|
-
console.log(`📁 Output: ${outDir}`);
|
|
66
|
-
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
67
|
-
console.log(`🔍 Verbose mode enabled`);
|
|
68
|
-
}
|
|
69
|
-
// 验证源目录
|
|
70
|
-
try {
|
|
71
|
-
await fs.access(srcDir);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
throw new Error(`Source directory does not exist: ${srcDir}`);
|
|
75
|
-
}
|
|
76
|
-
// 确保输出目录存在
|
|
77
|
-
await fs.mkdir(outDir, { recursive: true });
|
|
78
|
-
// 读取并转换 Markdown 文件
|
|
79
|
-
if (verbose)
|
|
80
|
-
console.log(`📄 Reading Markdown files...`);
|
|
81
|
-
const files = await this.markdownConverter.convertDirectory(srcDir);
|
|
82
|
-
if (files.length === 0) {
|
|
83
|
-
console.warn(`⚠️ No Markdown files found in ${srcDir}`);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (verbose)
|
|
87
|
-
console.log(`✅ Found ${files.length} Markdown files`);
|
|
88
|
-
// 更新导航生成器的 baseUrl(优先使用命令行参数)
|
|
89
|
-
if (baseUrl !== undefined) {
|
|
90
|
-
if (verbose)
|
|
91
|
-
console.log(`🔗 Using baseUrl: ${baseUrl}`);
|
|
92
|
-
this.navigationGenerator.setBaseUrl(baseUrl);
|
|
93
|
-
}
|
|
94
|
-
else if (this.config.baseUrl) {
|
|
95
|
-
if (verbose)
|
|
96
|
-
console.log(`🔗 Using config baseUrl: ${this.config.baseUrl}`);
|
|
97
|
-
this.navigationGenerator.setBaseUrl(this.config.baseUrl);
|
|
98
|
-
}
|
|
99
|
-
// 生成导航
|
|
100
|
-
if (verbose)
|
|
101
|
-
console.log(`🗺️ Generating navigation...`);
|
|
102
|
-
const navigation = this.navigationGenerator.generate(files);
|
|
103
|
-
// 处理每个文件
|
|
104
|
-
if (verbose)
|
|
105
|
-
console.log(`⚡ Processing files...`);
|
|
106
|
-
let processedCount = 0;
|
|
107
|
-
for (const file of files) {
|
|
108
|
-
try {
|
|
109
|
-
// 生成模板数据
|
|
110
|
-
const templateData = this.templateEngine.generateTemplateData(file, navigation);
|
|
111
|
-
// 渲染模板
|
|
112
|
-
const html = await this.templateEngine.render(templateData, template);
|
|
113
|
-
// 生成输出路径
|
|
114
|
-
const outputPath = this.templateEngine.getOutputPath(file, outDir);
|
|
115
|
-
// 保存文件
|
|
116
|
-
await this.templateEngine.saveToFile(html, outputPath);
|
|
117
|
-
processedCount++;
|
|
118
|
-
if (verbose && processedCount % 10 === 0) {
|
|
119
|
-
console.log(` Processed ${processedCount}/${files.length} files...`);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
console.error(`❌ Failed to process ${file.relativePath}:`, error);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// 生成站点地图
|
|
127
|
-
if (verbose)
|
|
128
|
-
console.log(`🗺️ Generating sitemap...`);
|
|
129
|
-
await this.generateSitemap(files, outDir);
|
|
130
|
-
// 生成导航 JSON 文件
|
|
131
|
-
if (verbose)
|
|
132
|
-
console.log(`📊 Generating navigation data...`);
|
|
133
|
-
await this.generateNavigationJson(files, outDir);
|
|
134
|
-
// 复制静态资源(如果存在)
|
|
135
|
-
await this.copyStaticAssets(srcDir, outDir);
|
|
136
|
-
// 确保每个目录都有 index.html
|
|
137
|
-
if (verbose)
|
|
138
|
-
console.log(`📁 Ensuring index.html in all directories...`);
|
|
139
|
-
await this.ensureDirectoryIndexHtml(outDir);
|
|
140
|
-
const duration = Date.now() - startTime;
|
|
141
|
-
if (verbose) {
|
|
142
|
-
console.log(`🎉 Build completed!`);
|
|
143
|
-
console.log(` Files processed: ${processedCount}/${files.length}`);
|
|
144
|
-
console.log(` Duration: ${duration}ms`);
|
|
145
|
-
console.log(` Output directory: ${outDir}`);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
console.log(`✅ Built ${processedCount} files to ${outDir} in ${duration}ms`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* 监听文件变化并自动重建
|
|
153
|
-
*/
|
|
154
|
-
async watch(options) {
|
|
155
|
-
const { srcDir, outDir, template, verbose = false, serve = false, port = 3000, host = 'localhost', baseUrl, } = options;
|
|
156
|
-
console.log(`👀 Watching for changes in ${srcDir}...`);
|
|
157
|
-
console.log(`Press Ctrl+C to stop watching`);
|
|
158
|
-
// 初始构建
|
|
159
|
-
await this.build(options);
|
|
160
|
-
// 启动 HTTP 服务器(如果启用)
|
|
161
|
-
let server = null;
|
|
162
|
-
if (serve) {
|
|
163
|
-
server = await this.startHttpServer(outDir, port, host);
|
|
164
|
-
console.log(`🌐 HTTP server started at http://${host}:${port}`);
|
|
165
|
-
}
|
|
166
|
-
// 创建 GitIgnoreProcessor 并加载 .gitignore 文件
|
|
167
|
-
const gitignoreProcessor = new gitignore_1.GitIgnoreProcessor(srcDir);
|
|
168
|
-
await gitignoreProcessor.loadFromFile();
|
|
169
|
-
// 获取 .gitignore 模式并转换为 chokidar 兼容的正则表达式
|
|
170
|
-
const gitignorePatterns = gitignoreProcessor.getPatterns();
|
|
171
|
-
const gitignoreRegexes = gitignorePatterns.map(pattern => {
|
|
172
|
-
// 将 glob 模式转换为正则表达式
|
|
173
|
-
// 注意:这是一个简化的转换,对于复杂的 glob 模式可能需要更复杂的处理
|
|
174
|
-
const regexPattern = pattern
|
|
175
|
-
.replace(/\./g, '\\.')
|
|
176
|
-
.replace(/\*/g, '.*')
|
|
177
|
-
.replace(/\?/g, '.')
|
|
178
|
-
.replace(/\*\*/g, '.*');
|
|
179
|
-
return new RegExp(`(^|[\\/\\\\])${regexPattern}([\\/\\\\].*)?$`);
|
|
180
|
-
});
|
|
181
|
-
// 设置文件监听,忽略隐藏文件、.zen 目录和 .gitignore 中的文件
|
|
182
|
-
const watcher = chokidar.watch(srcDir, {
|
|
183
|
-
ignored: [
|
|
184
|
-
/(^|[\/\\])\../, // 忽略隐藏文件
|
|
185
|
-
/(^|[\/\\])\.zen($|[\/\\])/, // 忽略 .zen 目录
|
|
186
|
-
...gitignoreRegexes, // 忽略 .gitignore 中的文件
|
|
187
|
-
],
|
|
188
|
-
persistent: true,
|
|
189
|
-
ignoreInitial: true,
|
|
190
|
-
});
|
|
191
|
-
let isBuilding = false;
|
|
192
|
-
let buildQueue = [];
|
|
193
|
-
const debouncedBuild = async () => {
|
|
194
|
-
if (isBuilding) {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
isBuilding = true;
|
|
198
|
-
const changedFiles = [...buildQueue];
|
|
199
|
-
buildQueue = [];
|
|
200
|
-
try {
|
|
201
|
-
if (verbose) {
|
|
202
|
-
console.log(`\n🔄 Rebuilding due to changes in: ${changedFiles.join(', ')}`);
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
console.log(`\n🔄 Rebuilding...`);
|
|
206
|
-
}
|
|
207
|
-
await this.build(options);
|
|
208
|
-
console.log(`✅ Rebuild complete. Watching for changes...`);
|
|
209
|
-
}
|
|
210
|
-
catch (error) {
|
|
211
|
-
console.error(`❌ Rebuild failed:`, error);
|
|
212
|
-
}
|
|
213
|
-
finally {
|
|
214
|
-
isBuilding = false;
|
|
215
|
-
// 如果队列中有新文件,立即处理
|
|
216
|
-
if (buildQueue.length > 0) {
|
|
217
|
-
setTimeout(debouncedBuild, 100);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
watcher
|
|
222
|
-
.on('add', (filePath) => {
|
|
223
|
-
// 双重检查:确保文件是 .md 文件且不被 .gitignore 忽略
|
|
224
|
-
if (filePath.endsWith('.md') && !gitignoreProcessor.shouldIgnore(filePath)) {
|
|
225
|
-
if (verbose)
|
|
226
|
-
console.log(`📄 File added: ${filePath}`);
|
|
227
|
-
buildQueue.push(filePath);
|
|
228
|
-
setTimeout(debouncedBuild, 300);
|
|
229
|
-
}
|
|
230
|
-
})
|
|
231
|
-
.on('change', (filePath) => {
|
|
232
|
-
// 双重检查:确保文件是 .md 文件且不被 .gitignore 忽略
|
|
233
|
-
if (filePath.endsWith('.md') && !gitignoreProcessor.shouldIgnore(filePath)) {
|
|
234
|
-
if (verbose)
|
|
235
|
-
console.log(`📄 File changed: ${filePath}`);
|
|
236
|
-
buildQueue.push(filePath);
|
|
237
|
-
setTimeout(debouncedBuild, 300);
|
|
238
|
-
}
|
|
239
|
-
})
|
|
240
|
-
.on('unlink', (filePath) => {
|
|
241
|
-
// 双重检查:确保文件是 .md 文件且不被 .gitignore 忽略
|
|
242
|
-
if (filePath.endsWith('.md') && !gitignoreProcessor.shouldIgnore(filePath)) {
|
|
243
|
-
if (verbose)
|
|
244
|
-
console.log(`📄 File removed: ${filePath}`);
|
|
245
|
-
buildQueue.push(filePath);
|
|
246
|
-
setTimeout(debouncedBuild, 300);
|
|
247
|
-
}
|
|
248
|
-
})
|
|
249
|
-
.on('error', (error) => {
|
|
250
|
-
console.error(`❌ Watcher error:`, error);
|
|
251
|
-
});
|
|
252
|
-
// 处理退出信号
|
|
253
|
-
process.on('SIGINT', () => {
|
|
254
|
-
console.log(`\n👋 Stopping watcher...`);
|
|
255
|
-
watcher.close();
|
|
256
|
-
// 关闭 HTTP 服务器(如果存在)
|
|
257
|
-
if (server) {
|
|
258
|
-
console.log(`🌐 Stopping HTTP server...`);
|
|
259
|
-
server.close(() => {
|
|
260
|
-
console.log(`✅ HTTP server stopped`);
|
|
261
|
-
process.exit(0);
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
process.exit(0);
|
|
266
|
-
}
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* 启动 HTTP 服务器
|
|
271
|
-
*/
|
|
272
|
-
async startHttpServer(outDir, port, host) {
|
|
273
|
-
return new Promise((resolve, reject) => {
|
|
274
|
-
const app = (0, express_1.default)();
|
|
275
|
-
// 提供静态文件服务
|
|
276
|
-
app.use(express_1.default.static(outDir));
|
|
277
|
-
// 处理 SPA 路由 - 所有未找到的路径返回 index.html
|
|
278
|
-
app.get('*', (req, res) => {
|
|
279
|
-
res.sendFile(path.join(outDir, 'index.html'));
|
|
280
|
-
});
|
|
281
|
-
const server = app.listen(port, host, () => {
|
|
282
|
-
resolve(server);
|
|
283
|
-
});
|
|
284
|
-
server.on('error', (error) => {
|
|
285
|
-
reject(error);
|
|
286
|
-
});
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* 生成站点地图
|
|
291
|
-
*/
|
|
292
|
-
async generateSitemap(files, outDir) {
|
|
293
|
-
try {
|
|
294
|
-
const sitemapXml = this.navigationGenerator.generateSitemap(files, this.config.baseUrl);
|
|
295
|
-
const sitemapPath = path.join(outDir, 'sitemap.xml');
|
|
296
|
-
await fs.writeFile(sitemapPath, sitemapXml, 'utf-8');
|
|
297
|
-
}
|
|
298
|
-
catch (error) {
|
|
299
|
-
console.warn(`⚠️ Failed to generate sitemap:`, error);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* 生成导航 JSON 文件
|
|
304
|
-
*/
|
|
305
|
-
async generateNavigationJson(files, outDir) {
|
|
306
|
-
try {
|
|
307
|
-
const navigationJson = this.navigationGenerator.generateJsonNavigation(files);
|
|
308
|
-
const navPath = path.join(outDir, 'navigation.json');
|
|
309
|
-
await fs.writeFile(navPath, navigationJson, 'utf-8');
|
|
310
|
-
}
|
|
311
|
-
catch (error) {
|
|
312
|
-
console.warn(`⚠️ Failed to generate navigation JSON:`, error);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* 复制静态资源
|
|
317
|
-
*/
|
|
318
|
-
async copyStaticAssets(srcDir, outDir) {
|
|
319
|
-
const staticDir = path.join(srcDir, 'static');
|
|
320
|
-
try {
|
|
321
|
-
await fs.access(staticDir);
|
|
322
|
-
// 简单的递归复制
|
|
323
|
-
async function copyDir(source, target) {
|
|
324
|
-
await fs.mkdir(target, { recursive: true });
|
|
325
|
-
const entries = await fs.readdir(source, { withFileTypes: true });
|
|
326
|
-
for (const entry of entries) {
|
|
327
|
-
const srcPath = path.join(source, entry.name);
|
|
328
|
-
const destPath = path.join(target, entry.name);
|
|
329
|
-
if (entry.isDirectory()) {
|
|
330
|
-
await copyDir(srcPath, destPath);
|
|
331
|
-
}
|
|
332
|
-
else {
|
|
333
|
-
await fs.copyFile(srcPath, destPath);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
await copyDir(staticDir, path.join(outDir, 'static'));
|
|
338
|
-
}
|
|
339
|
-
catch (error) {
|
|
340
|
-
// 静态目录不存在是正常的,忽略错误
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* 确保每个目录都有 index.html 文件
|
|
345
|
-
* 为缺少 index.html 的目录创建重定向页面
|
|
346
|
-
*/
|
|
347
|
-
async ensureDirectoryIndexHtml(outDir) {
|
|
348
|
-
try {
|
|
349
|
-
// 递归遍历所有目录
|
|
350
|
-
async function processDirectory(dirPath) {
|
|
351
|
-
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
352
|
-
// 检查当前目录是否有 index.html
|
|
353
|
-
const hasIndexHtml = entries.some(entry => entry.isFile() && entry.name === 'index.html');
|
|
354
|
-
if (!hasIndexHtml) {
|
|
355
|
-
// 查找当前目录下的第一个 .html 文件(不包括 index.html)
|
|
356
|
-
const htmlFiles = entries
|
|
357
|
-
.filter(entry => entry.isFile() && entry.name.endsWith('.html') && entry.name !== 'index.html')
|
|
358
|
-
.map(entry => entry.name)
|
|
359
|
-
.sort();
|
|
360
|
-
let redirectTarget;
|
|
361
|
-
if (htmlFiles.length > 0) {
|
|
362
|
-
// 重定向到第一个 .html 文件
|
|
363
|
-
redirectTarget = htmlFiles[0];
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
// 如果没有 .html 文件,重定向到父目录
|
|
367
|
-
const parentDir = path.dirname(dirPath);
|
|
368
|
-
if (parentDir === dirPath) {
|
|
369
|
-
// 已经是根目录,重定向到根目录的 index.html(如果存在)
|
|
370
|
-
redirectTarget = 'index.html';
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
// 计算相对路径到父目录
|
|
374
|
-
const relativePath = path.relative(dirPath, parentDir);
|
|
375
|
-
redirectTarget = path.join(relativePath, 'index.html');
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
// 创建重定向 HTML
|
|
379
|
-
const redirectHtml = `<!DOCTYPE html>
|
|
380
|
-
<html lang="zh-CN">
|
|
381
|
-
<head>
|
|
382
|
-
<meta charset="UTF-8">
|
|
383
|
-
<meta http-equiv="refresh" content="0; url=${redirectTarget}">
|
|
384
|
-
<title>Redirecting...</title>
|
|
385
|
-
<script>
|
|
386
|
-
window.location.href = "${redirectTarget}";
|
|
387
|
-
</script>
|
|
388
|
-
</head>
|
|
389
|
-
<body>
|
|
390
|
-
<p>正在重定向到 <a href="${redirectTarget}">${redirectTarget}</a>...</p>
|
|
391
|
-
</body>
|
|
392
|
-
</html>`;
|
|
393
|
-
await fs.writeFile(path.join(dirPath, 'index.html'), redirectHtml, 'utf-8');
|
|
394
|
-
}
|
|
395
|
-
// 递归处理子目录
|
|
396
|
-
for (const entry of entries) {
|
|
397
|
-
if (entry.isDirectory()) {
|
|
398
|
-
await processDirectory(path.join(dirPath, entry.name));
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
await processDirectory(outDir);
|
|
403
|
-
}
|
|
404
|
-
catch (error) {
|
|
405
|
-
console.warn(`⚠️ Failed to ensure index.html in directories:`, error);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* 清理输出目录
|
|
410
|
-
*/
|
|
411
|
-
async clean(outDir) {
|
|
412
|
-
try {
|
|
413
|
-
await fs.rm(outDir, { recursive: true, force: true });
|
|
414
|
-
console.log(`🧹 Cleaned output directory: ${outDir}`);
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
console.error(`❌ Failed to clean output directory:`, error);
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* 验证配置
|
|
422
|
-
*/
|
|
423
|
-
validateConfig(config) {
|
|
424
|
-
const errors = [];
|
|
425
|
-
if (config.srcDir && !path.isAbsolute(config.srcDir)) {
|
|
426
|
-
errors.push('srcDir must be an absolute path');
|
|
427
|
-
}
|
|
428
|
-
if (config.outDir && !path.isAbsolute(config.outDir)) {
|
|
429
|
-
errors.push('outDir must be an absolute path');
|
|
430
|
-
}
|
|
431
|
-
if (config.i18n) {
|
|
432
|
-
if (!config.i18n.sourceLang) {
|
|
433
|
-
errors.push('i18n.sourceLang is required');
|
|
434
|
-
}
|
|
435
|
-
if (!config.i18n.targetLangs || config.i18n.targetLangs.length === 0) {
|
|
436
|
-
errors.push('i18n.targetLangs must have at least one language');
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
return errors;
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
exports.ZenBuilder = ZenBuilder;
|
|
443
|
-
//# sourceMappingURL=builder.js.map
|
package/dist/builder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/gitignore.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GitIgnore 处理器
|
|
3
|
-
* 用于读取和解析 .gitignore 文件,并提供文件过滤功能
|
|
4
|
-
*/
|
|
5
|
-
export declare class GitIgnoreProcessor {
|
|
6
|
-
private patterns;
|
|
7
|
-
private baseDir;
|
|
8
|
-
constructor(baseDir: string);
|
|
9
|
-
/**
|
|
10
|
-
* 从 .gitignore 文件加载模式
|
|
11
|
-
*/
|
|
12
|
-
loadFromFile(gitignorePath?: string): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* 解析 .gitignore 内容为模式数组
|
|
15
|
-
*/
|
|
16
|
-
private parsePatterns;
|
|
17
|
-
/**
|
|
18
|
-
* 检查文件是否应该被忽略
|
|
19
|
-
* @param filePath 文件的绝对路径
|
|
20
|
-
* @returns 如果应该被忽略返回 true
|
|
21
|
-
*/
|
|
22
|
-
shouldIgnore(filePath: string): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* 获取所有忽略模式
|
|
25
|
-
*/
|
|
26
|
-
getPatterns(): string[];
|
|
27
|
-
/**
|
|
28
|
-
* 添加自定义忽略模式
|
|
29
|
-
*/
|
|
30
|
-
addPattern(pattern: string): void;
|
|
31
|
-
/**
|
|
32
|
-
* 清除所有模式
|
|
33
|
-
*/
|
|
34
|
-
clearPatterns(): void;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* 创建 GitIgnoreProcessor 实例并加载 .gitignore 文件
|
|
38
|
-
*/
|
|
39
|
-
export declare function createGitIgnoreProcessor(baseDir: string): Promise<GitIgnoreProcessor>;
|
|
40
|
-
//# sourceMappingURL=gitignore.d.ts.map
|
package/dist/gitignore.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../src/gitignore.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B;;OAEG;IACG,YAAY,CAAC,aAAa,GAAE,MAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvE;;OAEG;IACH,OAAO,CAAC,aAAa;IA0CrB;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IA+DvC;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;IAIvB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,aAAa,IAAI,IAAI;CAGtB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAI3F"}
|