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 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.
@@ -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"}