zengen 0.1.34 → 0.1.36
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 +57 -0
- package/.zen/translations.json +51 -0
- package/dist/ai-client.d.ts +34 -0
- package/dist/ai-client.d.ts.map +1 -0
- package/dist/ai-client.js +180 -0
- package/dist/ai-client.js.map +1 -0
- package/dist/ai-processor.d.ts +51 -0
- package/dist/ai-processor.d.ts.map +1 -0
- package/dist/ai-processor.js +215 -0
- package/dist/ai-processor.js.map +1 -0
- package/dist/ai-service.d.ts +79 -0
- package/dist/ai-service.d.ts.map +1 -0
- package/dist/ai-service.js +257 -0
- package/dist/ai-service.js.map +1 -0
- package/dist/builder.d.ts +26 -2
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +420 -9
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +45 -3
- package/dist/cli.js.map +1 -1
- package/dist/gitignore.d.ts +2 -1
- package/dist/gitignore.d.ts.map +1 -1
- package/dist/gitignore.js +21 -3
- package/dist/gitignore.js.map +1 -1
- package/dist/gitignore.test.js +82 -17
- package/dist/gitignore.test.js.map +1 -1
- package/dist/markdown.d.ts +6 -1
- package/dist/markdown.d.ts.map +1 -1
- package/dist/markdown.js +31 -9
- package/dist/markdown.js.map +1 -1
- package/dist/navigation.js +5 -5
- package/dist/navigation.js.map +1 -1
- package/dist/scanner.d.ts +26 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +190 -0
- package/dist/scanner.js.map +1 -0
- package/dist/template.d.ts +6 -2
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +58 -9
- package/dist/template.js.map +1 -1
- package/dist/translation-service.d.ts +72 -0
- package/dist/translation-service.d.ts.map +1 -0
- package/dist/translation-service.js +291 -0
- package/dist/translation-service.js.map +1 -0
- package/dist/types.d.ts +35 -4
- package/dist/types.d.ts.map +1 -1
- package/docs/advanced-usage.md +39 -0
- package/docs/getting-started.md +26 -0
- package/docs/guides/best-practices.md +0 -113
- package/docs/guides/config.md +0 -233
- package/package.json +3 -2
- package/src/ai-client.ts +227 -0
- package/src/ai-processor.ts +243 -0
- package/src/ai-service.ts +281 -0
- package/src/builder.ts +543 -10
- package/src/cli.ts +49 -3
- package/src/gitignore.test.ts +82 -17
- package/src/gitignore.ts +23 -3
- package/src/markdown.ts +39 -11
- package/src/navigation.ts +5 -5
- package/src/scanner.ts +180 -0
- package/src/template.ts +69 -9
- package/src/translation-service.ts +350 -0
- package/src/types.ts +39 -3
- package/test-multilang.js +44 -0
- package/docs/ci/github-ci-cd.md +0 -127
- package/docs/guides/api.md +0 -277
package/dist/builder.js
CHANGED
|
@@ -41,6 +41,10 @@ const markdown_1 = require("./markdown");
|
|
|
41
41
|
const template_1 = require("./template");
|
|
42
42
|
const navigation_1 = require("./navigation");
|
|
43
43
|
const gitignore_1 = require("./gitignore");
|
|
44
|
+
const scanner_1 = require("./scanner");
|
|
45
|
+
const ai_processor_1 = require("./ai-processor");
|
|
46
|
+
const translation_service_1 = require("./translation-service");
|
|
47
|
+
const ai_service_1 = require("./ai-service");
|
|
44
48
|
const fs = __importStar(require("fs/promises"));
|
|
45
49
|
const path = __importStar(require("path"));
|
|
46
50
|
const chokidar = __importStar(require("chokidar"));
|
|
@@ -49,21 +53,35 @@ class ZenBuilder {
|
|
|
49
53
|
constructor(config = {}) {
|
|
50
54
|
this.config = {};
|
|
51
55
|
this.config = config;
|
|
52
|
-
|
|
56
|
+
// 创建 AI 处理器
|
|
57
|
+
this.aiProcessor = new ai_processor_1.AIProcessor(config);
|
|
58
|
+
// 创建翻译服务
|
|
59
|
+
this.translationService = new translation_service_1.TranslationService(config.ai);
|
|
60
|
+
// 获取现有的 processors 或创建空数组
|
|
61
|
+
const existingProcessors = config.processors || [];
|
|
62
|
+
// 如果 AI 处理器启用,将其添加到 processors 列表的开头
|
|
63
|
+
const processors = this.aiProcessor.isEnabled()
|
|
64
|
+
? [this.aiProcessor, ...existingProcessors]
|
|
65
|
+
: existingProcessors;
|
|
66
|
+
this.markdownConverter = new markdown_1.MarkdownConverter(processors);
|
|
53
67
|
this.templateEngine = new template_1.TemplateEngine();
|
|
54
68
|
this.navigationGenerator = new navigation_1.NavigationGenerator(config.baseUrl);
|
|
69
|
+
this.scanner = new scanner_1.Scanner(config);
|
|
55
70
|
}
|
|
56
71
|
/**
|
|
57
72
|
* 构建文档站点
|
|
58
73
|
*/
|
|
59
74
|
async build(options) {
|
|
60
75
|
const startTime = Date.now();
|
|
61
|
-
const { srcDir, outDir, template, verbose = false, baseUrl } = options;
|
|
76
|
+
const { srcDir, outDir, template, verbose = false, baseUrl, langs } = options;
|
|
62
77
|
if (verbose) {
|
|
63
78
|
console.log(`🚀 Starting ZEN build...`);
|
|
64
79
|
console.log(`📁 Source: ${srcDir}`);
|
|
65
80
|
console.log(`📁 Output: ${outDir}`);
|
|
66
81
|
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
82
|
+
if (langs && langs.length > 0) {
|
|
83
|
+
console.log(`🌐 Target languages: ${langs.join(', ')}`);
|
|
84
|
+
}
|
|
67
85
|
console.log(`🔍 Verbose mode enabled`);
|
|
68
86
|
}
|
|
69
87
|
// 验证源目录
|
|
@@ -75,16 +93,75 @@ class ZenBuilder {
|
|
|
75
93
|
}
|
|
76
94
|
// 确保输出目录存在
|
|
77
95
|
await fs.mkdir(outDir, { recursive: true });
|
|
78
|
-
//
|
|
96
|
+
// 确保 .zen/.gitignore 文件存在且内容正确
|
|
97
|
+
const zenDir = path.dirname(outDir); // .zen 目录
|
|
98
|
+
const zenGitignorePath = path.join(zenDir, '.gitignore');
|
|
99
|
+
const gitignoreContent = 'dist\n';
|
|
100
|
+
try {
|
|
101
|
+
// 检查 .gitignore 文件是否存在
|
|
102
|
+
await fs.access(zenGitignorePath);
|
|
103
|
+
// 如果存在,检查内容是否正确
|
|
104
|
+
const existingContent = await fs.readFile(zenGitignorePath, 'utf-8');
|
|
105
|
+
if (existingContent.trim() !== 'dist') {
|
|
106
|
+
if (verbose)
|
|
107
|
+
console.log(`📝 Updating .zen/.gitignore content...`);
|
|
108
|
+
await fs.writeFile(zenGitignorePath, gitignoreContent, 'utf-8');
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// 文件不存在,创建它
|
|
113
|
+
if (verbose)
|
|
114
|
+
console.log(`📝 Creating .zen/.gitignore file...`);
|
|
115
|
+
await fs.writeFile(zenGitignorePath, gitignoreContent, 'utf-8');
|
|
116
|
+
}
|
|
117
|
+
// 扫描阶段:生成文件列表
|
|
79
118
|
if (verbose)
|
|
80
|
-
console.log(
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
119
|
+
console.log(`🔍 Scanning source directory...`);
|
|
120
|
+
const scannedFiles = await this.scanner.scanDirectory(srcDir);
|
|
121
|
+
if (scannedFiles.length === 0) {
|
|
83
122
|
console.warn(`⚠️ No Markdown files found in ${srcDir}`);
|
|
84
123
|
return;
|
|
85
124
|
}
|
|
86
125
|
if (verbose)
|
|
87
|
-
console.log(`✅ Found ${
|
|
126
|
+
console.log(`✅ Found ${scannedFiles.length} Markdown files`);
|
|
127
|
+
// 清理 meta.json 中的孤儿条目(文件已删除但缓存仍存在)
|
|
128
|
+
if (this.aiProcessor.isEnabled()) {
|
|
129
|
+
if (verbose)
|
|
130
|
+
console.log(`🧹 Cleaning orphan entries in meta.json...`);
|
|
131
|
+
const aiService = new ai_service_1.AIService();
|
|
132
|
+
const existingFilePaths = scannedFiles.map(file => file.path);
|
|
133
|
+
await aiService.removeOrphanEntries(existingFilePaths);
|
|
134
|
+
}
|
|
135
|
+
// 保存扫描结果到 .zen/dist 目录
|
|
136
|
+
const zenDistDir = path.join(path.dirname(outDir), 'dist');
|
|
137
|
+
const scanResultPath = path.join(zenDistDir, 'scan-result.json');
|
|
138
|
+
if (verbose)
|
|
139
|
+
console.log(`💾 Saving scan result to ${scanResultPath}...`);
|
|
140
|
+
await this.scanner.saveScanResult(scannedFiles, scanResultPath);
|
|
141
|
+
// 构建阶段:读取文件内容并转换
|
|
142
|
+
if (verbose)
|
|
143
|
+
console.log(`📄 Reading and converting Markdown files...`);
|
|
144
|
+
const files = await this.markdownConverter.convertScannedFiles(scannedFiles, srcDir);
|
|
145
|
+
if (files.length === 0) {
|
|
146
|
+
console.warn(`⚠️ Failed to read any Markdown files`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// AI 批量处理(如果启用)
|
|
150
|
+
if (this.aiProcessor.isEnabled()) {
|
|
151
|
+
if (verbose)
|
|
152
|
+
console.log(`🤖 Running AI metadata extraction...`);
|
|
153
|
+
await this.aiProcessor.processBatch(files);
|
|
154
|
+
}
|
|
155
|
+
// 存储母语文件到 .zen/src
|
|
156
|
+
if (verbose)
|
|
157
|
+
console.log(`💾 Storing native language files...`);
|
|
158
|
+
await this.storeNativeFiles(files, verbose);
|
|
159
|
+
// 处理翻译(如果指定了目标语言)
|
|
160
|
+
if (langs && langs.length > 0 && this.translationService.isEnabled()) {
|
|
161
|
+
if (verbose)
|
|
162
|
+
console.log(`🌐 Processing translations...`);
|
|
163
|
+
await this.processTranslations(files, langs, verbose);
|
|
164
|
+
}
|
|
88
165
|
// 更新导航生成器的 baseUrl(优先使用命令行参数)
|
|
89
166
|
if (baseUrl !== undefined) {
|
|
90
167
|
if (verbose)
|
|
@@ -120,7 +197,7 @@ class ZenBuilder {
|
|
|
120
197
|
}
|
|
121
198
|
}
|
|
122
199
|
catch (error) {
|
|
123
|
-
console.error(`❌ Failed to process ${file.
|
|
200
|
+
console.error(`❌ Failed to process ${file.path}:`, error);
|
|
124
201
|
}
|
|
125
202
|
}
|
|
126
203
|
// 生成站点地图
|
|
@@ -148,6 +225,261 @@ class ZenBuilder {
|
|
|
148
225
|
console.log(`✅ Built ${processedCount} files to ${outDir} in ${duration}ms`);
|
|
149
226
|
}
|
|
150
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* 多语言构建:基于 meta.json 构建多语言版本
|
|
230
|
+
*/
|
|
231
|
+
async buildMultiLang(options) {
|
|
232
|
+
const startTime = Date.now();
|
|
233
|
+
const { srcDir, outDir, template, verbose = false, baseUrl, langs, useMetaData = true, filterOrphans = true, } = options;
|
|
234
|
+
if (!langs || langs.length === 0) {
|
|
235
|
+
throw new Error('At least one language must be specified for multi-language build');
|
|
236
|
+
}
|
|
237
|
+
if (verbose) {
|
|
238
|
+
console.log(`🚀 Starting ZEN multi-language build...`);
|
|
239
|
+
console.log(`📁 Source: ${srcDir}`);
|
|
240
|
+
console.log(`📁 Output: ${outDir}`);
|
|
241
|
+
console.log(`🌐 Target languages: ${langs.join(', ')}`);
|
|
242
|
+
console.log(`📊 Using meta.json: ${useMetaData}`);
|
|
243
|
+
console.log(`🧹 Filter orphans: ${filterOrphans}`);
|
|
244
|
+
console.log(`🔗 Base URL: ${baseUrl || '(not set)'}`);
|
|
245
|
+
console.log(`🔍 Verbose mode enabled`);
|
|
246
|
+
}
|
|
247
|
+
// 验证源目录
|
|
248
|
+
try {
|
|
249
|
+
await fs.access(srcDir);
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
throw new Error(`Source directory does not exist: ${srcDir}`);
|
|
253
|
+
}
|
|
254
|
+
// 确保输出目录存在
|
|
255
|
+
await fs.mkdir(outDir, { recursive: true });
|
|
256
|
+
// 加载 meta.json
|
|
257
|
+
const aiService = new ai_service_1.AIService();
|
|
258
|
+
const metaData = await aiService.loadMetaData();
|
|
259
|
+
if (verbose) {
|
|
260
|
+
console.log(`📊 Loaded ${metaData.files.length} entries from meta.json`);
|
|
261
|
+
}
|
|
262
|
+
// 过滤有效的文件项
|
|
263
|
+
let validFiles = metaData.files;
|
|
264
|
+
if (filterOrphans) {
|
|
265
|
+
const originalCount = validFiles.length;
|
|
266
|
+
validFiles = await this.filterValidFiles(validFiles, srcDir, verbose);
|
|
267
|
+
if (verbose) {
|
|
268
|
+
console.log(`🧹 Filtered ${originalCount - validFiles.length} orphan files`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (validFiles.length === 0) {
|
|
272
|
+
console.warn(`⚠️ No valid files found in meta.json`);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
if (verbose) {
|
|
276
|
+
console.log(`✅ Found ${validFiles.length} valid files to build`);
|
|
277
|
+
}
|
|
278
|
+
// 为每个语言构建
|
|
279
|
+
let totalProcessed = 0;
|
|
280
|
+
for (const lang of langs) {
|
|
281
|
+
if (verbose) {
|
|
282
|
+
console.log(`\n🌐 Building for language: ${lang}`);
|
|
283
|
+
}
|
|
284
|
+
const langProcessed = await this.buildForLanguage(validFiles, lang, srcDir, outDir, template, baseUrl, verbose, langs);
|
|
285
|
+
totalProcessed += langProcessed;
|
|
286
|
+
}
|
|
287
|
+
// 生成语言索引页面
|
|
288
|
+
if (verbose) {
|
|
289
|
+
console.log(`\n📄 Generating language index...`);
|
|
290
|
+
}
|
|
291
|
+
await this.generateLanguageIndex(langs, outDir, verbose);
|
|
292
|
+
const duration = Date.now() - startTime;
|
|
293
|
+
console.log(`🎉 Multi-language build completed!`);
|
|
294
|
+
console.log(` Languages: ${langs.join(', ')}`);
|
|
295
|
+
console.log(` Total files built: ${totalProcessed}`);
|
|
296
|
+
console.log(` Duration: ${duration}ms`);
|
|
297
|
+
console.log(` Output directory: ${outDir}`);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 过滤有效的文件(移除 path 不存在的孤儿文件)
|
|
301
|
+
*/
|
|
302
|
+
async filterValidFiles(files, srcDir, verbose) {
|
|
303
|
+
const validFiles = [];
|
|
304
|
+
for (const file of files) {
|
|
305
|
+
// 如果文件路径已经是绝对路径或包含目录,直接使用
|
|
306
|
+
const filePath = file.path.startsWith('/') ? file.path : path.join(process.cwd(), file.path);
|
|
307
|
+
try {
|
|
308
|
+
await fs.access(filePath);
|
|
309
|
+
validFiles.push(file);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
// 文件不存在,跳过
|
|
313
|
+
if (verbose) {
|
|
314
|
+
console.log(` ⚠️ Orphan file skipped: ${file.path} (path: ${filePath})`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return validFiles;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* 为特定语言构建文件
|
|
322
|
+
*/
|
|
323
|
+
async buildForLanguage(files, lang, srcDir, outDir, template, baseUrl, verbose, allLangs) {
|
|
324
|
+
const aiService = new ai_service_1.AIService();
|
|
325
|
+
const langDir = path.join(outDir, lang);
|
|
326
|
+
await fs.mkdir(langDir, { recursive: true });
|
|
327
|
+
let processedCount = 0;
|
|
328
|
+
// 更新导航生成器的 baseUrl
|
|
329
|
+
if (baseUrl !== undefined) {
|
|
330
|
+
this.navigationGenerator.setBaseUrl(baseUrl);
|
|
331
|
+
}
|
|
332
|
+
else if (this.config.baseUrl) {
|
|
333
|
+
this.navigationGenerator.setBaseUrl(this.config.baseUrl);
|
|
334
|
+
}
|
|
335
|
+
// 为当前语言生成导航
|
|
336
|
+
const navigation = this.navigationGenerator.generate([]); // 暂时使用空导航
|
|
337
|
+
for (const file of files) {
|
|
338
|
+
try {
|
|
339
|
+
let content;
|
|
340
|
+
let filePath;
|
|
341
|
+
let finalHash = file.hash;
|
|
342
|
+
let finalMetadata = file.metadata;
|
|
343
|
+
// 获取源语言
|
|
344
|
+
const sourceLang = file.metadata?.inferred_lang || 'zh-Hans';
|
|
345
|
+
if (lang === sourceLang) {
|
|
346
|
+
// 如果是源语言,读取原始文件
|
|
347
|
+
filePath = file.path.startsWith('/') ? file.path : path.join(process.cwd(), file.path);
|
|
348
|
+
content = await fs.readFile(filePath, 'utf-8');
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
// 如果是目标语言,尝试读取翻译文件
|
|
352
|
+
const translationService = new translation_service_1.TranslationService();
|
|
353
|
+
try {
|
|
354
|
+
// 创建临时 FileInfo 对象用于获取翻译
|
|
355
|
+
const tempFileInfo = {
|
|
356
|
+
path: file.path,
|
|
357
|
+
name: path.basename(file.path, '.md'),
|
|
358
|
+
ext: '.md',
|
|
359
|
+
content: '', // 临时内容
|
|
360
|
+
hash: file.hash,
|
|
361
|
+
aiMetadata: file.metadata,
|
|
362
|
+
};
|
|
363
|
+
// 确保翻译文件存在并获取内容
|
|
364
|
+
content = await translationService.ensureTranslatedFile(tempFileInfo, sourceLang, lang, file.hash);
|
|
365
|
+
// 翻译文件的路径
|
|
366
|
+
filePath = translationService.getTranslatedFilePath(file.path, lang, file.hash);
|
|
367
|
+
// 对于翻译文件,我们可以使用相同的 hash,或者生成新的 hash
|
|
368
|
+
// 这里我们使用相同的 hash,因为翻译是基于原始内容的
|
|
369
|
+
}
|
|
370
|
+
catch (translationError) {
|
|
371
|
+
console.warn(`⚠️ Failed to get translation for ${file.path} to ${lang}, using source file:`, translationError);
|
|
372
|
+
// 如果翻译失败,回退到源文件
|
|
373
|
+
filePath = file.path.startsWith('/') ? file.path : path.join(process.cwd(), file.path);
|
|
374
|
+
content = await fs.readFile(filePath, 'utf-8');
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// 创建 FileInfo 对象
|
|
378
|
+
const fileInfo = {
|
|
379
|
+
path: file.path,
|
|
380
|
+
name: path.basename(file.path, '.md'),
|
|
381
|
+
ext: '.md',
|
|
382
|
+
content,
|
|
383
|
+
hash: finalHash,
|
|
384
|
+
aiMetadata: finalMetadata,
|
|
385
|
+
};
|
|
386
|
+
// 转换为 HTML
|
|
387
|
+
const convertedFileInfo = await this.markdownConverter.convert(fileInfo);
|
|
388
|
+
const html = convertedFileInfo.html || '';
|
|
389
|
+
// 更新文件信息中的 HTML 内容
|
|
390
|
+
const finalFileInfo = {
|
|
391
|
+
...fileInfo,
|
|
392
|
+
html,
|
|
393
|
+
};
|
|
394
|
+
// 生成模板数据
|
|
395
|
+
const templateData = this.templateEngine.generateTemplateData(finalFileInfo, navigation, lang, allLangs);
|
|
396
|
+
// 渲染模板
|
|
397
|
+
const renderedHtml = await this.templateEngine.render(templateData, template);
|
|
398
|
+
// 生成输出路径
|
|
399
|
+
const outputPath = this.templateEngine.getOutputPath(finalFileInfo, outDir, lang, file.hash);
|
|
400
|
+
// 保存文件
|
|
401
|
+
await this.templateEngine.saveToFile(renderedHtml, outputPath);
|
|
402
|
+
processedCount++;
|
|
403
|
+
if (verbose && processedCount % 5 === 0) {
|
|
404
|
+
console.log(` Processed ${processedCount}/${files.length} files for ${lang}...`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
catch (error) {
|
|
408
|
+
console.error(`❌ Failed to process ${file.path} for ${lang}:`, error);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (verbose) {
|
|
412
|
+
console.log(` ✅ Built ${processedCount} files for ${lang}`);
|
|
413
|
+
}
|
|
414
|
+
return processedCount;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* 生成语言索引页面
|
|
418
|
+
*/
|
|
419
|
+
async generateLanguageIndex(langs, outDir, verbose) {
|
|
420
|
+
try {
|
|
421
|
+
const indexHtml = `<!DOCTYPE html>
|
|
422
|
+
<html lang="en">
|
|
423
|
+
<head>
|
|
424
|
+
<meta charset="UTF-8">
|
|
425
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
426
|
+
<title>ZEN Documentation - Language Selection</title>
|
|
427
|
+
<style>
|
|
428
|
+
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
429
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
430
|
+
line-height: 1.6; color: #333; background: #f8f9fa;
|
|
431
|
+
display: flex; justify-content: center; align-items: center; min-height: 100vh; }
|
|
432
|
+
.container { text-align: center; padding: 3rem; max-width: 600px; }
|
|
433
|
+
h1 { font-size: 2.5rem; margin-bottom: 1rem; color: #212529; }
|
|
434
|
+
p { color: #6c757d; margin-bottom: 2rem; font-size: 1.125rem; }
|
|
435
|
+
.lang-list { list-style: none; display: flex; flex-direction: column; gap: 1rem; }
|
|
436
|
+
.lang-item { margin: 0; }
|
|
437
|
+
.lang-link { display: block; padding: 1rem 2rem; background: #fff; border: 2px solid #007bff;
|
|
438
|
+
color: #007bff; text-decoration: none; border-radius: 8px;
|
|
439
|
+
font-size: 1.25rem; font-weight: 500; transition: all 0.2s; }
|
|
440
|
+
.lang-link:hover { background: #007bff; color: white; transform: translateY(-2px);
|
|
441
|
+
box-shadow: 0 4px 12px rgba(0, 123, 255, 0.2); }
|
|
442
|
+
.footer { margin-top: 3rem; color: #6c757d; font-size: 0.875rem; }
|
|
443
|
+
</style>
|
|
444
|
+
</head>
|
|
445
|
+
<body>
|
|
446
|
+
<div class="container">
|
|
447
|
+
<h1>ZEN Documentation</h1>
|
|
448
|
+
<p>Select your preferred language:</p>
|
|
449
|
+
|
|
450
|
+
<ul class="lang-list">
|
|
451
|
+
${langs
|
|
452
|
+
.map(lang => {
|
|
453
|
+
const langNames = {
|
|
454
|
+
'zh-Hans': '简体中文',
|
|
455
|
+
'en-US': 'English',
|
|
456
|
+
'ja-JP': '日本語',
|
|
457
|
+
'ko-KR': '한국어',
|
|
458
|
+
};
|
|
459
|
+
const langName = langNames[lang] || lang;
|
|
460
|
+
return `<li class="lang-item">
|
|
461
|
+
<a href="${lang}/" class="lang-link">${langName}</a>
|
|
462
|
+
</li>`;
|
|
463
|
+
})
|
|
464
|
+
.join('')}
|
|
465
|
+
</ul>
|
|
466
|
+
|
|
467
|
+
<div class="footer">
|
|
468
|
+
<p>Generated by <strong>ZEN</strong> • <a href="https://github.com/zccz14/ZEN" target="_blank">View on GitHub</a></p>
|
|
469
|
+
</div>
|
|
470
|
+
</div>
|
|
471
|
+
</body>
|
|
472
|
+
</html>`;
|
|
473
|
+
const indexPath = path.join(outDir, 'index.html');
|
|
474
|
+
await fs.writeFile(indexPath, indexHtml, 'utf-8');
|
|
475
|
+
if (verbose) {
|
|
476
|
+
console.log(` ✅ Generated language index at ${indexPath}`);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
catch (error) {
|
|
480
|
+
console.warn(`⚠️ Failed to generate language index:`, error);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
151
483
|
/**
|
|
152
484
|
* 监听文件变化并自动重建
|
|
153
485
|
*/
|
|
@@ -418,8 +750,75 @@ class ZenBuilder {
|
|
|
418
750
|
}
|
|
419
751
|
}
|
|
420
752
|
/**
|
|
421
|
-
*
|
|
753
|
+
* 存储母语文件到 .zen/src 目录
|
|
754
|
+
*/
|
|
755
|
+
async storeNativeFiles(files, verbose) {
|
|
756
|
+
const aiService = new ai_service_1.AIService();
|
|
757
|
+
for (const file of files) {
|
|
758
|
+
try {
|
|
759
|
+
// 获取源语言(从AI元数据或默认值)
|
|
760
|
+
const sourceLang = file.aiMetadata?.inferred_lang || 'zh-Hans';
|
|
761
|
+
const nativeHash = file.hash || aiService.calculateFileHash(file.content);
|
|
762
|
+
if (verbose) {
|
|
763
|
+
console.log(`📄 Storing native file: ${file.path} (${sourceLang})`);
|
|
764
|
+
}
|
|
765
|
+
// 生成母语文件路径
|
|
766
|
+
const zenSrcDir = path.join(process.cwd(), '.zen', 'src');
|
|
767
|
+
const sourceLangDir = path.join(zenSrcDir, sourceLang);
|
|
768
|
+
const nativeFilePath = path.join(sourceLangDir, `${nativeHash}.md`);
|
|
769
|
+
// 确保目录存在
|
|
770
|
+
await fs.mkdir(sourceLangDir, { recursive: true });
|
|
771
|
+
// 检查文件是否已存在
|
|
772
|
+
try {
|
|
773
|
+
await fs.access(nativeFilePath);
|
|
774
|
+
if (verbose) {
|
|
775
|
+
console.log(` ✅ Native file already exists: ${nativeFilePath}`);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
catch (error) {
|
|
779
|
+
// 文件不存在,保存母语文件
|
|
780
|
+
await fs.writeFile(nativeFilePath, file.content, 'utf-8');
|
|
781
|
+
if (verbose) {
|
|
782
|
+
console.log(` 💾 Saved native file: ${nativeFilePath}`);
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
catch (error) {
|
|
787
|
+
console.error(`❌ Failed to store native file for ${file.path}:`, error);
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* 处理文件翻译
|
|
422
793
|
*/
|
|
794
|
+
async processTranslations(files, targetLangs, verbose) {
|
|
795
|
+
const aiService = new ai_service_1.AIService();
|
|
796
|
+
for (const file of files) {
|
|
797
|
+
try {
|
|
798
|
+
// 获取文件的AI元数据(包含inferred_lang)
|
|
799
|
+
const sourceLang = file.aiMetadata?.inferred_lang || 'zh-Hans';
|
|
800
|
+
const nativeHash = file.hash || aiService.calculateFileHash(file.content);
|
|
801
|
+
if (verbose) {
|
|
802
|
+
console.log(`📄 Processing translations for: ${file.path} (${sourceLang})`);
|
|
803
|
+
}
|
|
804
|
+
for (const targetLang of targetLangs) {
|
|
805
|
+
try {
|
|
806
|
+
// 确保翻译文件存在
|
|
807
|
+
await this.translationService.ensureTranslatedFile(file, sourceLang, targetLang, nativeHash);
|
|
808
|
+
if (verbose) {
|
|
809
|
+
console.log(` ✅ Translated to ${targetLang}`);
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
catch (error) {
|
|
813
|
+
console.error(` ❌ Failed to translate to ${targetLang}:`, error);
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
catch (error) {
|
|
818
|
+
console.error(`❌ Failed to process translations for ${file.path}:`, error);
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
}
|
|
423
822
|
validateConfig(config) {
|
|
424
823
|
const errors = [];
|
|
425
824
|
if (config.srcDir && !path.isAbsolute(config.srcDir)) {
|
|
@@ -436,6 +835,18 @@ class ZenBuilder {
|
|
|
436
835
|
errors.push('i18n.targetLangs must have at least one language');
|
|
437
836
|
}
|
|
438
837
|
}
|
|
838
|
+
if (config.ai) {
|
|
839
|
+
if (config.ai.enabled && !process.env.OPENAI_API_KEY && !config.i18n?.apiKey) {
|
|
840
|
+
errors.push('OPENAI_API_KEY environment variable is required when AI is enabled');
|
|
841
|
+
}
|
|
842
|
+
if (config.ai.temperature !== undefined &&
|
|
843
|
+
(config.ai.temperature < 0 || config.ai.temperature > 2)) {
|
|
844
|
+
errors.push('ai.temperature must be between 0 and 2');
|
|
845
|
+
}
|
|
846
|
+
if (config.ai.maxTokens !== undefined && config.ai.maxTokens < 1) {
|
|
847
|
+
errors.push('ai.maxTokens must be greater than 0');
|
|
848
|
+
}
|
|
849
|
+
}
|
|
439
850
|
return errors;
|
|
440
851
|
}
|
|
441
852
|
}
|
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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"}
|