zengen 0.1.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/README.md +138 -0
- package/demo/src/api.md +92 -0
- package/demo/src/best-practices.md +194 -0
- package/demo/src/config.md +160 -0
- package/demo/src/index.md +46 -0
- package/dist/builder.d.ts +37 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +298 -0
- package/dist/builder.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +297 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown.d.ts +34 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +209 -0
- package/dist/markdown.js.map +1 -0
- package/dist/navigation.d.ts +36 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +160 -0
- package/dist/navigation.js.map +1 -0
- package/dist/template.d.ts +29 -0
- package/dist/template.d.ts.map +1 -0
- package/dist/template.js +407 -0
- package/dist/template.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
- package/src/builder.ts +292 -0
- package/src/cli.ts +296 -0
- package/src/index.ts +40 -0
- package/src/markdown.ts +196 -0
- package/src/navigation.ts +191 -0
- package/src/template.ts +387 -0
- package/src/types.ts +50 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# ZEN - 简洁的 Markdown 文档站点构建工具
|
|
2
|
+
|
|
3
|
+
> 📖 **阅读提示**: 本 README 采用中英文分离排版。中文版本在上方,英文版本在下方分隔线之后。
|
|
4
|
+
|
|
5
|
+
## 项目初衷
|
|
6
|
+
|
|
7
|
+
### 回归内容
|
|
8
|
+
我喜欢沉思,但不想要配置复杂的构建工具,折腾复杂的文档配置,不喜欢复杂的结构。
|
|
9
|
+
|
|
10
|
+
### 回归母语
|
|
11
|
+
生命苦短,我用 AI 翻译。与世界保持连接。
|
|
12
|
+
|
|
13
|
+
## 基本功能
|
|
14
|
+
|
|
15
|
+
1. **静态站点生成**
|
|
16
|
+
- 将任意一个包含 Markdown 的文件夹构建成一个静态 HTML 站点
|
|
17
|
+
|
|
18
|
+
2. **智能导航**
|
|
19
|
+
- 生成站点地图和导航,不需要保持原始的 Markdown 源文件的目录结构
|
|
20
|
+
|
|
21
|
+
3. **增量 i18n 翻译**
|
|
22
|
+
- 使用 LLM 进行增量 i18n 翻译,让用户使用母语编写 Markdown,但是用户可以是多语言的
|
|
23
|
+
|
|
24
|
+
## 设计理念
|
|
25
|
+
|
|
26
|
+
- **极简主义**: 最少的配置,最大的灵活性
|
|
27
|
+
- **内容优先**: 专注于写作,而不是工具配置
|
|
28
|
+
- **AI 赋能**: 利用 AI 处理翻译和内容组织
|
|
29
|
+
- **跨语言**: 支持多语言内容创作和展示
|
|
30
|
+
|
|
31
|
+
## 快速开始
|
|
32
|
+
|
|
33
|
+
### 安装
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install -g zengen
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
或者作为项目依赖安装:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install zengen
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 使用
|
|
46
|
+
|
|
47
|
+
1. **初始化项目**:
|
|
48
|
+
```bash
|
|
49
|
+
zengen init
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
2. **构建文档站点**:
|
|
53
|
+
```bash
|
|
54
|
+
zengen build ./docs
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
3. **实时预览(监听文件变化)**:
|
|
58
|
+
```bash
|
|
59
|
+
zengen build ./docs --watch
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
4. **查看帮助**:
|
|
63
|
+
```bash
|
|
64
|
+
zengen --help
|
|
65
|
+
```
|
|
66
|
+
|
|
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
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
**ZEN** - 让文档回归本质,让写作回归宁静。
|
|
138
|
+
**ZEN** - Return documentation to its essence, return writing to tranquility.
|
package/demo/src/api.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# API 文档
|
|
2
|
+
|
|
3
|
+
ZEN 提供了简单易用的 API 来构建文档站点。
|
|
4
|
+
|
|
5
|
+
## 核心 API
|
|
6
|
+
|
|
7
|
+
### `build(options: BuildOptions): Promise<void>`
|
|
8
|
+
|
|
9
|
+
构建文档站点的主要函数。
|
|
10
|
+
|
|
11
|
+
**参数:**
|
|
12
|
+
- `options.srcDir`: 源 Markdown 文件目录
|
|
13
|
+
- `options.outDir`: 输出 HTML 文件目录
|
|
14
|
+
- `options.template?`: 自定义模板路径(可选)
|
|
15
|
+
- `options.i18n?`: 多语言配置(可选)
|
|
16
|
+
|
|
17
|
+
**示例:**
|
|
18
|
+
```typescript
|
|
19
|
+
import { build } from 'zengen';
|
|
20
|
+
|
|
21
|
+
await build({
|
|
22
|
+
srcDir: './docs',
|
|
23
|
+
outDir: './dist',
|
|
24
|
+
template: './custom-template.html'
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### `generateNavigation(files: string[]): NavigationItem[]`
|
|
29
|
+
|
|
30
|
+
生成导航结构。
|
|
31
|
+
|
|
32
|
+
**参数:**
|
|
33
|
+
- `files`: Markdown 文件路径数组
|
|
34
|
+
|
|
35
|
+
**返回:**
|
|
36
|
+
导航项数组,包含标题、路径和子项。
|
|
37
|
+
|
|
38
|
+
## 配置选项
|
|
39
|
+
|
|
40
|
+
### BuildOptions 接口
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
interface BuildOptions {
|
|
44
|
+
srcDir: string;
|
|
45
|
+
outDir: string;
|
|
46
|
+
template?: string;
|
|
47
|
+
i18n?: {
|
|
48
|
+
sourceLang: string;
|
|
49
|
+
targetLangs: string[];
|
|
50
|
+
apiKey?: string;
|
|
51
|
+
};
|
|
52
|
+
includePattern?: string;
|
|
53
|
+
excludePattern?: string;
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 插件系统
|
|
58
|
+
|
|
59
|
+
ZEN 支持插件扩展功能:
|
|
60
|
+
|
|
61
|
+
### 自定义处理器
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
interface MarkdownProcessor {
|
|
65
|
+
beforeParse?(content: string): string;
|
|
66
|
+
afterParse?(html: string, metadata: any): string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 注册处理器
|
|
70
|
+
zen.registerProcessor('my-processor', {
|
|
71
|
+
beforeParse(content) {
|
|
72
|
+
// 预处理 Markdown
|
|
73
|
+
return content;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 自定义模板引擎
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
interface TemplateEngine {
|
|
82
|
+
render(template: string, data: any): string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// 注册模板引擎
|
|
86
|
+
zen.registerTemplateEngine('handlebars', {
|
|
87
|
+
render(template, data) {
|
|
88
|
+
// 渲染模板
|
|
89
|
+
return rendered;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
```
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# 最佳实践
|
|
2
|
+
|
|
3
|
+
本文档介绍使用 ZEN 构建文档站点的最佳实践。
|
|
4
|
+
|
|
5
|
+
## 文件组织
|
|
6
|
+
|
|
7
|
+
### 推荐的文件结构
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
project/
|
|
11
|
+
├── docs/ # 文档源文件
|
|
12
|
+
│ ├── getting-started.md # 入门指南
|
|
13
|
+
│ ├── api/ # API 文档目录
|
|
14
|
+
│ │ ├── overview.md
|
|
15
|
+
│ │ ├── core-api.md
|
|
16
|
+
│ │ └── plugins.md
|
|
17
|
+
│ ├── guides/ # 指南目录
|
|
18
|
+
│ │ ├── installation.md
|
|
19
|
+
│ │ └── configuration.md
|
|
20
|
+
│ └── resources/ # 资源文件
|
|
21
|
+
│ └── images/
|
|
22
|
+
├── zen.config.js # ZEN 配置文件
|
|
23
|
+
└── package.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 命名约定
|
|
27
|
+
|
|
28
|
+
- 使用小写字母和连字符:`getting-started.md`
|
|
29
|
+
- 避免特殊字符和空格
|
|
30
|
+
- 主要页面使用简短名称:`index.md`, `api.md`
|
|
31
|
+
- 分类页面使用目录组织
|
|
32
|
+
|
|
33
|
+
## 写作规范
|
|
34
|
+
|
|
35
|
+
### Markdown 语法
|
|
36
|
+
|
|
37
|
+
**推荐:**
|
|
38
|
+
```markdown
|
|
39
|
+
# 一级标题
|
|
40
|
+
## 二级标题
|
|
41
|
+
### 三级标题
|
|
42
|
+
|
|
43
|
+
使用 **粗体** 和 *斜体* 强调重要内容。
|
|
44
|
+
|
|
45
|
+
- 列表项 1
|
|
46
|
+
- 列表项 2
|
|
47
|
+
- 子列表项
|
|
48
|
+
|
|
49
|
+
1. 有序列表项 1
|
|
50
|
+
2. 有序列表项 2
|
|
51
|
+
|
|
52
|
+
> 引用重要的说明或提示。
|
|
53
|
+
|
|
54
|
+
`行内代码` 用于技术术语。
|
|
55
|
+
|
|
56
|
+
```javascript
|
|
57
|
+
// 代码块示例
|
|
58
|
+
console.log("Hello ZEN!");
|
|
59
|
+
```
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**避免:**
|
|
63
|
+
- 过多的标题层级(超过 4 级)
|
|
64
|
+
- 复杂的表格(考虑使用简单列表替代)
|
|
65
|
+
- 过长的行(建议 80-100 字符换行)
|
|
66
|
+
|
|
67
|
+
### 元数据使用
|
|
68
|
+
|
|
69
|
+
在每个 Markdown 文件顶部添加 frontmatter:
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
---
|
|
73
|
+
title: 页面标题
|
|
74
|
+
description: 简洁的页面描述
|
|
75
|
+
keywords: [关键词1, 关键词2]
|
|
76
|
+
author: 作者名
|
|
77
|
+
date: 2024-01-01
|
|
78
|
+
last_modified: 2024-01-15
|
|
79
|
+
---
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 多语言管理
|
|
83
|
+
|
|
84
|
+
### 翻译策略
|
|
85
|
+
|
|
86
|
+
1. **主语言优先**: 先用母语完整编写文档
|
|
87
|
+
2. **增量翻译**: 每次更新后只翻译修改部分
|
|
88
|
+
3. **术语一致**: 建立术语表保持翻译一致性
|
|
89
|
+
4. **人工校对**: AI 翻译后建议人工校对
|
|
90
|
+
|
|
91
|
+
### 翻译文件管理
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
docs/
|
|
95
|
+
├── index.zh-CN.md # 中文源文件
|
|
96
|
+
├── index.en-US.md # 英文翻译
|
|
97
|
+
├── api/
|
|
98
|
+
│ ├── overview.zh-CN.md
|
|
99
|
+
│ └── overview.en-US.md
|
|
100
|
+
└── glossary.json # 术语表
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 性能优化
|
|
104
|
+
|
|
105
|
+
### 构建优化
|
|
106
|
+
|
|
107
|
+
1. **增量构建**: 使用 `--watch` 模式开发
|
|
108
|
+
2. **缓存利用**: ZEN 会自动缓存处理结果
|
|
109
|
+
3. **并行处理**: 多核 CPU 自动并行处理文件
|
|
110
|
+
|
|
111
|
+
### 输出优化
|
|
112
|
+
|
|
113
|
+
1. **压缩 HTML**: 生产环境启用 HTML 压缩
|
|
114
|
+
2. **资源优化**: 图片压缩和 CSS/JS 合并
|
|
115
|
+
3. **CDN 部署**: 静态文件使用 CDN 加速
|
|
116
|
+
|
|
117
|
+
## 部署策略
|
|
118
|
+
|
|
119
|
+
### 本地预览
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# 开发时监听变化
|
|
123
|
+
zengen ./docs --out ./dist --watch
|
|
124
|
+
|
|
125
|
+
# 启动本地服务器
|
|
126
|
+
npx serve ./dist
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### CI/CD 集成
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
# GitHub Actions 示例
|
|
133
|
+
name: Build and Deploy
|
|
134
|
+
on:
|
|
135
|
+
push:
|
|
136
|
+
branches: [main]
|
|
137
|
+
jobs:
|
|
138
|
+
build:
|
|
139
|
+
runs-on: ubuntu-latest
|
|
140
|
+
steps:
|
|
141
|
+
- uses: actions/checkout@v3
|
|
142
|
+
- uses: actions/setup-node@v3
|
|
143
|
+
- run: npm ci
|
|
144
|
+
- run: npx zengen ./docs --out ./dist
|
|
145
|
+
- uses: peaceiris/actions-gh-pages@v3
|
|
146
|
+
with:
|
|
147
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
148
|
+
publish_dir: ./dist
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 云部署
|
|
152
|
+
|
|
153
|
+
- **Vercel**: 自动部署静态站点
|
|
154
|
+
- **Netlify**: 支持表单处理和重定向
|
|
155
|
+
- **GitHub Pages**: 免费托管文档
|
|
156
|
+
- **AWS S3**: 企业级静态托管
|
|
157
|
+
|
|
158
|
+
## 维护建议
|
|
159
|
+
|
|
160
|
+
### 定期更新
|
|
161
|
+
|
|
162
|
+
1. **内容审核**: 每月检查文档准确性
|
|
163
|
+
2. **链接检查**: 定期检查死链
|
|
164
|
+
3. **性能监控**: 监控页面加载速度
|
|
165
|
+
4. **用户反馈**: 收集用户反馈改进文档
|
|
166
|
+
|
|
167
|
+
### 版本控制
|
|
168
|
+
|
|
169
|
+
1. **文档版本化**: 与软件版本同步
|
|
170
|
+
2. **变更日志**: 记录文档更新历史
|
|
171
|
+
3. **回滚机制**: 支持快速回滚到旧版本
|
|
172
|
+
|
|
173
|
+
## 常见问题
|
|
174
|
+
|
|
175
|
+
### 构建速度慢
|
|
176
|
+
|
|
177
|
+
**解决方案:**
|
|
178
|
+
- 减少不必要的图片和资源
|
|
179
|
+
- 使用 `--incremental` 模式
|
|
180
|
+
- 拆分大型文档为多个小文件
|
|
181
|
+
|
|
182
|
+
### 翻译质量不高
|
|
183
|
+
|
|
184
|
+
**解决方案:**
|
|
185
|
+
- 提供上下文给 AI 翻译
|
|
186
|
+
- 建立术语表提高一致性
|
|
187
|
+
- 人工校对关键内容
|
|
188
|
+
|
|
189
|
+
### 导航结构复杂
|
|
190
|
+
|
|
191
|
+
**解决方案:**
|
|
192
|
+
- 保持扁平化目录结构
|
|
193
|
+
- 使用清晰的标题层级
|
|
194
|
+
- 提供搜索功能
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# 配置指南
|
|
2
|
+
|
|
3
|
+
ZEN 的设计理念是极简主义,因此配置非常简单。
|
|
4
|
+
|
|
5
|
+
## 基本配置
|
|
6
|
+
|
|
7
|
+
### 命令行参数
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
zengen <src-dir> --out <dist-dir> [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**可用选项:**
|
|
14
|
+
- `--out, -o`: 输出目录(必需)
|
|
15
|
+
- `--template, -t`: 自定义模板文件
|
|
16
|
+
- `--watch, -w`: 监听文件变化并自动重建
|
|
17
|
+
- `--verbose, -v`: 显示详细日志
|
|
18
|
+
- `--help, -h`: 显示帮助信息
|
|
19
|
+
|
|
20
|
+
### 配置文件
|
|
21
|
+
|
|
22
|
+
在项目根目录创建 `zen.config.js` 文件:
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
module.exports = {
|
|
26
|
+
srcDir: './docs',
|
|
27
|
+
outDir: './dist',
|
|
28
|
+
template: './template.html',
|
|
29
|
+
i18n: {
|
|
30
|
+
sourceLang: 'zh-CN',
|
|
31
|
+
targetLangs: ['en-US', 'ja-JP']
|
|
32
|
+
},
|
|
33
|
+
plugins: [
|
|
34
|
+
'zen-plugin-sitemap',
|
|
35
|
+
'zen-plugin-search'
|
|
36
|
+
]
|
|
37
|
+
};
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 模板配置
|
|
41
|
+
|
|
42
|
+
### 默认模板
|
|
43
|
+
|
|
44
|
+
ZEN 使用内置的极简模板,包含:
|
|
45
|
+
- 响应式布局
|
|
46
|
+
- 代码高亮
|
|
47
|
+
- 导航菜单
|
|
48
|
+
- 深色/浅色主题切换
|
|
49
|
+
|
|
50
|
+
### 自定义模板
|
|
51
|
+
|
|
52
|
+
创建自定义模板文件 `custom-template.html`:
|
|
53
|
+
|
|
54
|
+
```html
|
|
55
|
+
<!DOCTYPE html>
|
|
56
|
+
<html lang="zh-CN">
|
|
57
|
+
<head>
|
|
58
|
+
<meta charset="UTF-8">
|
|
59
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
60
|
+
<title>{{title}}</title>
|
|
61
|
+
<link rel="stylesheet" href="/styles.css">
|
|
62
|
+
</head>
|
|
63
|
+
<body>
|
|
64
|
+
<nav class="sidebar">
|
|
65
|
+
{{navigation}}
|
|
66
|
+
</nav>
|
|
67
|
+
<main class="content">
|
|
68
|
+
{{content}}
|
|
69
|
+
</main>
|
|
70
|
+
<footer>
|
|
71
|
+
<p>由 ZEN 生成</p>
|
|
72
|
+
</footer>
|
|
73
|
+
</body>
|
|
74
|
+
</html>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**可用变量:**
|
|
78
|
+
- `{{title}}`: 页面标题
|
|
79
|
+
- `{{content}}`: 转换后的 HTML 内容
|
|
80
|
+
- `{{navigation}}`: 导航菜单 HTML
|
|
81
|
+
- `{{metadata}}`: 页面元数据(JSON 字符串)
|
|
82
|
+
|
|
83
|
+
## 多语言配置
|
|
84
|
+
|
|
85
|
+
### 基本配置
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
// zen.config.js
|
|
89
|
+
module.exports = {
|
|
90
|
+
i18n: {
|
|
91
|
+
sourceLang: 'zh-CN', // 源语言
|
|
92
|
+
targetLangs: ['en-US'], // 目标语言
|
|
93
|
+
apiKey: process.env.OPENAI_API_KEY, // AI 翻译 API 密钥
|
|
94
|
+
provider: 'openai' // 翻译服务提供商
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 翻译文件结构
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
docs/
|
|
103
|
+
├── index.md # 源文件
|
|
104
|
+
├── index.en-US.md # 英文翻译
|
|
105
|
+
└── index.ja-JP.md # 日文翻译
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 增量翻译
|
|
109
|
+
|
|
110
|
+
ZEN 支持增量翻译,只会翻译新增或修改的内容:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 首次构建,翻译所有内容
|
|
114
|
+
zengen ./docs --out ./dist
|
|
115
|
+
|
|
116
|
+
# 修改部分内容后,只翻译修改的部分
|
|
117
|
+
zengen ./docs --out ./dist --incremental
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 高级配置
|
|
121
|
+
|
|
122
|
+
### 文件过滤
|
|
123
|
+
|
|
124
|
+
```javascript
|
|
125
|
+
module.exports = {
|
|
126
|
+
includePattern: '**/*.md', // 包含的文件模式
|
|
127
|
+
excludePattern: '**/_*.md', // 排除的文件模式
|
|
128
|
+
ignoreHidden: true // 忽略隐藏文件
|
|
129
|
+
};
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 元数据提取
|
|
133
|
+
|
|
134
|
+
在 Markdown 文件顶部添加 YAML frontmatter:
|
|
135
|
+
|
|
136
|
+
```yaml
|
|
137
|
+
---
|
|
138
|
+
title: 页面标题
|
|
139
|
+
description: 页面描述
|
|
140
|
+
author: 作者名
|
|
141
|
+
date: 2024-01-01
|
|
142
|
+
tags: [文档, 教程]
|
|
143
|
+
---
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 自定义处理器
|
|
147
|
+
|
|
148
|
+
```javascript
|
|
149
|
+
module.exports = {
|
|
150
|
+
processors: [
|
|
151
|
+
{
|
|
152
|
+
name: 'my-processor',
|
|
153
|
+
beforeParse(content) {
|
|
154
|
+
// 预处理逻辑
|
|
155
|
+
return content;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
};
|
|
160
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# ZEN 文档站点示例
|
|
2
|
+
|
|
3
|
+
欢迎使用 ZEN 文档构建工具!这是一个极简主义的 Markdown 文档站点生成器。
|
|
4
|
+
|
|
5
|
+
## 特性
|
|
6
|
+
|
|
7
|
+
- **极简配置**: 无需复杂的配置文件
|
|
8
|
+
- **内容优先**: 专注于写作,而不是工具配置
|
|
9
|
+
- **智能导航**: 自动生成站点地图和导航
|
|
10
|
+
- **多语言支持**: 支持增量 i18n 翻译
|
|
11
|
+
|
|
12
|
+
## 快速开始
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# 安装 zengen
|
|
16
|
+
npm install -g zengen
|
|
17
|
+
|
|
18
|
+
# 构建文档
|
|
19
|
+
zengen ./docs --out ./dist
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 代码示例
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
// 这是一个 JavaScript 示例
|
|
26
|
+
const zen = require('zengen');
|
|
27
|
+
|
|
28
|
+
async function buildDocs() {
|
|
29
|
+
await zen.build({
|
|
30
|
+
srcDir: './docs',
|
|
31
|
+
outDir: './dist'
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# 这是一个 Python 示例
|
|
38
|
+
def hello_world():
|
|
39
|
+
print("Hello from ZEN!")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 下一步
|
|
43
|
+
|
|
44
|
+
1. 阅读 [API 文档](./api.md)
|
|
45
|
+
2. 查看 [配置指南](./config.md)
|
|
46
|
+
3. 学习 [最佳实践](./best-practices.md)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BuildOptions, ZenConfig } from './types';
|
|
2
|
+
export declare class ZenBuilder {
|
|
3
|
+
private markdownConverter;
|
|
4
|
+
private templateEngine;
|
|
5
|
+
private navigationGenerator;
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config?: ZenConfig);
|
|
8
|
+
/**
|
|
9
|
+
* 构建文档站点
|
|
10
|
+
*/
|
|
11
|
+
build(options: BuildOptions): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* 监听文件变化并自动重建
|
|
14
|
+
*/
|
|
15
|
+
watch(options: BuildOptions): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* 生成站点地图
|
|
18
|
+
*/
|
|
19
|
+
private generateSitemap;
|
|
20
|
+
/**
|
|
21
|
+
* 生成导航 JSON 文件
|
|
22
|
+
*/
|
|
23
|
+
private generateNavigationJson;
|
|
24
|
+
/**
|
|
25
|
+
* 复制静态资源
|
|
26
|
+
*/
|
|
27
|
+
private copyStaticAssets;
|
|
28
|
+
/**
|
|
29
|
+
* 清理输出目录
|
|
30
|
+
*/
|
|
31
|
+
clean(outDir: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* 验证配置
|
|
34
|
+
*/
|
|
35
|
+
validateConfig(config: ZenConfig): string[];
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +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;AAQ5E,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;IAqFjD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmFjD;;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"}
|