zengen 0.1.35 → 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 +57 -8
- 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 +2 -1
- 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 +68 -8
- 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/docs/guides/api.md
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
# API 文档
|
|
2
|
-
|
|
3
|
-
ZEN 提供了简单易用的 API 来构建文档站点。
|
|
4
|
-
|
|
5
|
-
## 核心 API
|
|
6
|
-
|
|
7
|
-
### `ZenBuilder` 类
|
|
8
|
-
|
|
9
|
-
主要的文档构建器类。
|
|
10
|
-
|
|
11
|
-
```typescript
|
|
12
|
-
import { ZenBuilder } from 'zengen';
|
|
13
|
-
|
|
14
|
-
const builder = new ZenBuilder(config);
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
#### 构造函数
|
|
18
|
-
|
|
19
|
-
```typescript
|
|
20
|
-
constructor(config: ZenConfig = {})
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**参数:**
|
|
24
|
-
|
|
25
|
-
- `config`: 可选的配置对象
|
|
26
|
-
|
|
27
|
-
#### `build(options: BuildOptions): Promise<void>`
|
|
28
|
-
|
|
29
|
-
构建文档站点的主要方法。
|
|
30
|
-
|
|
31
|
-
**参数:**
|
|
32
|
-
|
|
33
|
-
- `options.srcDir`: 源 Markdown 文件目录
|
|
34
|
-
- `options.outDir`: 输出 HTML 文件目录
|
|
35
|
-
- `options.template?`: 自定义模板路径(可选)
|
|
36
|
-
- `options.watch?`: 是否监听文件变化(可选)
|
|
37
|
-
- `options.verbose?`: 是否显示详细日志(可选)
|
|
38
|
-
- `options.serve?`: 是否启动开发服务器(需要 `watch: true`)(可选)
|
|
39
|
-
- `options.port?`: 开发服务器端口(默认: 3000)(可选)
|
|
40
|
-
- `options.host?`: 开发服务器主机(默认: 'localhost')(可选)
|
|
41
|
-
- `options.baseUrl?`: 站点基础 URL(可选)
|
|
42
|
-
|
|
43
|
-
**示例:**
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
import { ZenBuilder } from 'zengen';
|
|
47
|
-
|
|
48
|
-
const builder = new ZenBuilder();
|
|
49
|
-
|
|
50
|
-
await builder.build({
|
|
51
|
-
srcDir: './docs',
|
|
52
|
-
outDir: './dist',
|
|
53
|
-
template: './custom-template.html',
|
|
54
|
-
verbose: true,
|
|
55
|
-
});
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
#### `watch(options: BuildOptions): Promise<void>`
|
|
59
|
-
|
|
60
|
-
监听文件变化并自动重建。
|
|
61
|
-
|
|
62
|
-
**参数:** 与 `build` 方法相同
|
|
63
|
-
|
|
64
|
-
**示例:**
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
await builder.watch({
|
|
68
|
-
srcDir: './docs',
|
|
69
|
-
outDir: './dist',
|
|
70
|
-
serve: true,
|
|
71
|
-
port: 8080,
|
|
72
|
-
});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## 配置选项
|
|
76
|
-
|
|
77
|
-
### `BuildOptions` 接口
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
interface BuildOptions {
|
|
81
|
-
srcDir: string;
|
|
82
|
-
outDir: string;
|
|
83
|
-
template?: string;
|
|
84
|
-
watch?: boolean;
|
|
85
|
-
verbose?: boolean;
|
|
86
|
-
serve?: boolean;
|
|
87
|
-
port?: number;
|
|
88
|
-
host?: string;
|
|
89
|
-
baseUrl?: string;
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### `ZenConfig` 接口
|
|
94
|
-
|
|
95
|
-
```typescript
|
|
96
|
-
interface ZenConfig {
|
|
97
|
-
srcDir?: string;
|
|
98
|
-
outDir?: string;
|
|
99
|
-
template?: string;
|
|
100
|
-
baseUrl?: string;
|
|
101
|
-
i18n?: {
|
|
102
|
-
sourceLang: string;
|
|
103
|
-
targetLangs: string[];
|
|
104
|
-
apiKey?: string;
|
|
105
|
-
};
|
|
106
|
-
processors?: MarkdownProcessor[];
|
|
107
|
-
includePattern?: string;
|
|
108
|
-
excludePattern?: string;
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## 其他组件
|
|
113
|
-
|
|
114
|
-
### `MarkdownConverter`
|
|
115
|
-
|
|
116
|
-
Markdown 转换器,支持自定义处理器。
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
import { MarkdownConverter } from 'zengen';
|
|
120
|
-
|
|
121
|
-
const converter = new MarkdownConverter(processors);
|
|
122
|
-
const html = await converter.convert(markdownContent, fileInfo);
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### `TemplateEngine`
|
|
126
|
-
|
|
127
|
-
模板引擎,用于渲染 HTML 模板。
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
import { TemplateEngine } from 'zengen';
|
|
131
|
-
|
|
132
|
-
const engine = new TemplateEngine();
|
|
133
|
-
const html = engine.render(templateContent, data);
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### `NavigationGenerator`
|
|
137
|
-
|
|
138
|
-
导航生成器,自动生成站点导航结构。
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
import { NavigationGenerator } from 'zengen';
|
|
142
|
-
|
|
143
|
-
const generator = new NavigationGenerator(baseUrl);
|
|
144
|
-
const navigation = generator.generate(files, currentPath);
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
## 插件系统
|
|
148
|
-
|
|
149
|
-
ZEN 支持通过处理器扩展功能:
|
|
150
|
-
|
|
151
|
-
### `MarkdownProcessor` 接口
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
interface MarkdownProcessor {
|
|
155
|
-
beforeParse?(content: string, fileInfo: FileInfo): string | Promise<string>;
|
|
156
|
-
afterParse?(html: string, fileInfo: FileInfo): string | Promise<string>;
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
**示例:**
|
|
161
|
-
|
|
162
|
-
```typescript
|
|
163
|
-
const myProcessor: MarkdownProcessor = {
|
|
164
|
-
beforeParse(content, fileInfo) {
|
|
165
|
-
// 预处理 Markdown 内容
|
|
166
|
-
return content.replace(/TODO:/g, '**TODO:**');
|
|
167
|
-
},
|
|
168
|
-
|
|
169
|
-
afterParse(html, fileInfo) {
|
|
170
|
-
// 后处理 HTML 内容
|
|
171
|
-
return html.replace(/<h2>/g, '<h2 class="custom">');
|
|
172
|
-
},
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
const builder = new ZenBuilder({
|
|
176
|
-
processors: [myProcessor],
|
|
177
|
-
});
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## 类型定义
|
|
181
|
-
|
|
182
|
-
### `FileInfo`
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
185
|
-
interface FileInfo {
|
|
186
|
-
path: string;
|
|
187
|
-
relativePath: string;
|
|
188
|
-
name: string;
|
|
189
|
-
ext: string;
|
|
190
|
-
content: string;
|
|
191
|
-
html?: string;
|
|
192
|
-
metadata?: Record<string, any>;
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
### `NavigationItem`
|
|
197
|
-
|
|
198
|
-
```typescript
|
|
199
|
-
interface NavigationItem {
|
|
200
|
-
title: string;
|
|
201
|
-
path: string;
|
|
202
|
-
children?: NavigationItem[];
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### `TemplateData`
|
|
207
|
-
|
|
208
|
-
```typescript
|
|
209
|
-
interface TemplateData {
|
|
210
|
-
title: string;
|
|
211
|
-
content: string;
|
|
212
|
-
navigation: NavigationItem[];
|
|
213
|
-
metadata?: Record<string, any>;
|
|
214
|
-
currentPath?: string;
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## 使用示例
|
|
219
|
-
|
|
220
|
-
### 基本使用
|
|
221
|
-
|
|
222
|
-
```typescript
|
|
223
|
-
import { ZenBuilder } from 'zengen';
|
|
224
|
-
|
|
225
|
-
async function buildDocumentation() {
|
|
226
|
-
const builder = new ZenBuilder();
|
|
227
|
-
|
|
228
|
-
await builder.build({
|
|
229
|
-
srcDir: './my-docs',
|
|
230
|
-
outDir: './public',
|
|
231
|
-
verbose: true,
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
console.log('Documentation built successfully!');
|
|
235
|
-
}
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 开发模式
|
|
239
|
-
|
|
240
|
-
```typescript
|
|
241
|
-
import { ZenBuilder } from 'zengen';
|
|
242
|
-
|
|
243
|
-
async function startDevServer() {
|
|
244
|
-
const builder = new ZenBuilder();
|
|
245
|
-
|
|
246
|
-
await builder.watch({
|
|
247
|
-
srcDir: './docs',
|
|
248
|
-
outDir: './dist',
|
|
249
|
-
serve: true,
|
|
250
|
-
port: 3000,
|
|
251
|
-
verbose: true,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
console.log('Dev server started at http://localhost:3000');
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### 自定义处理器
|
|
259
|
-
|
|
260
|
-
````typescript
|
|
261
|
-
import { ZenBuilder } from 'zengen';
|
|
262
|
-
|
|
263
|
-
const codeBlockProcessor = {
|
|
264
|
-
beforeParse(content, fileInfo) {
|
|
265
|
-
// 为代码块添加行号
|
|
266
|
-
return content.replace(/```(\w+)\n([\s\S]*?)```/g, (match, lang, code) => {
|
|
267
|
-
const lines = code.split('\n');
|
|
268
|
-
const numberedCode = lines.map((line, i) => `${i + 1}. ${line}`).join('\n');
|
|
269
|
-
return `\`\`\`${lang}\n${numberedCode}\n\`\`\``;
|
|
270
|
-
});
|
|
271
|
-
},
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
const builder = new ZenBuilder({
|
|
275
|
-
processors: [codeBlockProcessor],
|
|
276
|
-
});
|
|
277
|
-
````
|