component-auto-docs 0.1.1 → 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/README.md +127 -34
- package/bin/component-auto-docs.mjs +0 -0
- package/core/generate-component-docs.mjs +658 -86
- package/package.json +2 -1
- package/templates/docs/components/README.md +2 -1
- package/templates/docs.config.mjs +1 -0
- package/templates/src/docs/index.vue +1 -1
- package/templates/src/docs/runtime/component-doc-page.vue +166 -71
- package/templates/src/docs/runtime/use-auto-component-doc.ts +87 -44
- package/SHARING.md +0 -435
package/README.md
CHANGED
|
@@ -1,63 +1,114 @@
|
|
|
1
1
|
# component-auto-docs
|
|
2
2
|
|
|
3
|
-
uni-app
|
|
3
|
+
`component-auto-docs` 是一个面向 uni-app 组件库的文档自动化 CLI。
|
|
4
4
|
|
|
5
|
-
它会从组件源码中自动抽取 `defineProps`、`defineEmits`、slots、JSDoc
|
|
5
|
+
它会从组件源码中自动抽取 `defineProps`、`defineEmits`、slots、JSDoc 和类型信息,再结合每个组件目录下人工维护的 `docs.meta.json`,一次性生成 Markdown 文档、App 内交互文档页、AI 结构化索引和质量报告。
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 它解决什么问题
|
|
8
|
+
|
|
9
|
+
- 组件 API 不再靠人手抄,减少文档和源码不一致。
|
|
10
|
+
- 组件说明、示例、使用场景和注意事项沉淀到统一结构。
|
|
11
|
+
- App 内可以直接预览真实组件,并通过 Props 控制面板调试状态。
|
|
12
|
+
- 同一份组件知识可以同时给开发者、业务项目、AI 助手和检索系统使用。
|
|
13
|
+
- `docs:check` 可以作为质量门禁,提醒文档缺失或 API 注释不一致。
|
|
14
|
+
|
|
15
|
+
## 核心思路
|
|
16
|
+
|
|
17
|
+
这套工具遵循一个简单分工:
|
|
18
|
+
|
|
19
|
+
- 组件源码负责 API 真相:props、events、slots、类型、默认值、必填项。
|
|
20
|
+
- `docs.meta.json` 负责业务语义:标题、分类、描述、使用场景、避坑说明、示例。
|
|
21
|
+
- runtime 模板负责统一展示:组件列表页、组件详情页、真实预览、控制面板、API、示例和说明。
|
|
22
|
+
|
|
23
|
+
App 内组件详情页默认使用 Tab 分区:
|
|
24
|
+
|
|
25
|
+
- `预览`:真实组件预览、Props 控制面板、当前代码片段。
|
|
26
|
+
- `API`:Props、Events、Slots。
|
|
27
|
+
- `示例`:组件示例代码。
|
|
28
|
+
- `说明`:何时使用、不建议使用、注意事项、相关组件。
|
|
29
|
+
|
|
30
|
+
这样既保留完整文档,又避免组件详情页过长。
|
|
31
|
+
|
|
32
|
+
## 生成产物
|
|
33
|
+
|
|
34
|
+
执行 `init` 和 `gen` 后,会生成或更新:
|
|
35
|
+
|
|
36
|
+
- `docs/components/*.md`:给开发者阅读的组件 Markdown 文档。
|
|
37
|
+
- `docs/ai/components.catalog.json`:AI、检索系统和组件治理使用的结构化目录。
|
|
38
|
+
- `docs/ai/components.index.md`:AI 友好的 Markdown 索引。
|
|
39
|
+
- `docs/ai/llms.txt`:适合大模型读取的组件摘要。
|
|
40
|
+
- `docs/ai/components.quality.json`:文档质量报告。
|
|
41
|
+
- `src/docs/data.json`:App 内文档首页数据。
|
|
42
|
+
- `src/docs/components/*/data.json`:单组件详情页数据。
|
|
43
|
+
- `src/docs/data.js`、`src/docs/components/*/data.js`:App/小程序运行时使用的数据模块,避免部分小程序编译链把 JSON 字段提升成同名顶层变量。
|
|
44
|
+
- `src/docs/components/*/index.vue`:单组件交互文档页。
|
|
45
|
+
|
|
46
|
+
## 快速开始
|
|
47
|
+
|
|
48
|
+
安装:
|
|
8
49
|
|
|
9
50
|
```bash
|
|
10
51
|
pnpm add -D component-auto-docs
|
|
11
52
|
```
|
|
12
53
|
|
|
13
|
-
|
|
54
|
+
初始化模板:
|
|
14
55
|
|
|
15
56
|
```bash
|
|
16
57
|
pnpm exec component-auto-docs scaffold
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
初始化组件元数据、文档页和路由:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
17
63
|
pnpm exec component-auto-docs init
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
生成文档产物:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
18
69
|
pnpm exec component-auto-docs gen
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
检查文档质量:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
19
75
|
pnpm exec component-auto-docs check
|
|
20
76
|
```
|
|
21
77
|
|
|
22
|
-
|
|
78
|
+
如果已经由 `scaffold` 写入了 `package.json` 脚本,也可以使用:
|
|
23
79
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
80
|
+
```bash
|
|
81
|
+
pnpm docs:init
|
|
82
|
+
pnpm docs:gen
|
|
83
|
+
pnpm docs:check
|
|
84
|
+
pnpm docs:dev
|
|
85
|
+
```
|
|
30
86
|
|
|
31
87
|
## 命令说明
|
|
32
88
|
|
|
33
|
-
- `scaffold
|
|
34
|
-
- `init
|
|
35
|
-
- `gen`:生成 Markdown
|
|
36
|
-
- `check`:执行生成流程,并在质量报告存在 error 时以非 0
|
|
89
|
+
- `scaffold`:复制 `docs.config.mjs`、文档入口页、runtime 模板和文档接入说明,并写入 `package.json` 的 `docs:*` 脚本。
|
|
90
|
+
- `init`:扫描组件目录,初始化或补齐 `docs.meta.json`,生成自动交互文档页,并注册 `pages.json` 路由。
|
|
91
|
+
- `gen`:生成 Markdown、AI catalog、App 内页面数据和质量报告。
|
|
92
|
+
- `check`:执行生成流程,并在质量报告存在 error 时以非 0 状态退出。
|
|
37
93
|
|
|
38
|
-
|
|
94
|
+
已有模板文件默认不会覆盖。如需覆盖:
|
|
39
95
|
|
|
40
96
|
```bash
|
|
41
97
|
pnpm exec component-auto-docs scaffold --force
|
|
42
98
|
```
|
|
43
99
|
|
|
44
|
-
如果只想复制模板,不想自动修改 `package.json
|
|
100
|
+
如果只想复制模板,不想自动修改 `package.json`:
|
|
45
101
|
|
|
46
102
|
```bash
|
|
47
103
|
pnpm exec component-auto-docs scaffold --no-scripts
|
|
48
104
|
```
|
|
49
105
|
|
|
50
|
-
##
|
|
106
|
+
## docs.config.mjs
|
|
51
107
|
|
|
52
|
-
CLI
|
|
108
|
+
CLI 默认读取项目根目录的 `docs.config.mjs`。可以通过命令参数或环境变量指定其他配置:
|
|
53
109
|
|
|
54
110
|
```bash
|
|
55
111
|
pnpm exec component-auto-docs gen --config ./docs.config.mjs
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
也可以通过环境变量指定:
|
|
59
|
-
|
|
60
|
-
```bash
|
|
61
112
|
DOCS_CONFIG=./docs.config.mjs pnpm exec component-auto-docs gen
|
|
62
113
|
```
|
|
63
114
|
|
|
@@ -67,13 +118,27 @@ DOCS_CONFIG=./docs.config.mjs pnpm exec component-auto-docs gen
|
|
|
67
118
|
- `componentRoot`:组件目录,默认 `src/components`。
|
|
68
119
|
- `metaFileName`:组件元数据文件名,默认 `docs.meta.json`。
|
|
69
120
|
- `output`:Markdown、AI 文档、页面数据和质量报告输出位置。
|
|
121
|
+
- `pageDataModuleFileName`:单组件页面运行时数据模块文件名,默认 `data.js`。
|
|
70
122
|
- `routes`:是否自动写入 `pages.json`,以及文档路由前缀、插入锚点、标题后缀。
|
|
71
123
|
- `runtime`:自动文档页使用的页面壳、hook 和组件导入别名。
|
|
72
124
|
- `quality`:质量检查规则,例如是否要求 App 内文档页存在。
|
|
73
125
|
|
|
126
|
+
如果目标项目只需要 Markdown 和 AI catalog,不需要 App 内文档页,可以关闭:
|
|
127
|
+
|
|
128
|
+
```js
|
|
129
|
+
export default {
|
|
130
|
+
routes: {
|
|
131
|
+
enabled: false,
|
|
132
|
+
},
|
|
133
|
+
quality: {
|
|
134
|
+
requireDocPage: false,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
74
139
|
## docs.meta.json
|
|
75
140
|
|
|
76
|
-
每个组件目录下建议维护一个 `docs.meta.json
|
|
141
|
+
每个组件目录下建议维护一个 `docs.meta.json`。API 信息优先从源码自动抽取,`docs.meta.json` 主要补充业务语义和高质量示例。
|
|
77
142
|
|
|
78
143
|
```json
|
|
79
144
|
{
|
|
@@ -94,14 +159,42 @@ DOCS_CONFIG=./docs.config.mjs pnpm exec component-auto-docs gen
|
|
|
94
159
|
}
|
|
95
160
|
```
|
|
96
161
|
|
|
97
|
-
|
|
162
|
+
## 接入新项目
|
|
163
|
+
|
|
164
|
+
1. 安装依赖:`pnpm add -D component-auto-docs`。
|
|
165
|
+
2. 执行 `pnpm exec component-auto-docs scaffold`,复制配置、文档入口和 runtime 模板。
|
|
166
|
+
3. 按项目结构调整 `docs.config.mjs`,重点确认组件目录、路由、输出目录和别名。
|
|
167
|
+
4. 执行 `pnpm exec component-auto-docs init`,初始化组件元数据、交互文档页和路由。
|
|
168
|
+
5. 人工优化重点组件的 `docs.meta.json`,补充标题、分类、业务描述、示例和注意事项。
|
|
169
|
+
6. 执行 `pnpm exec component-auto-docs gen`,生成 Markdown、AI 索引、页面数据和质量报告。
|
|
170
|
+
7. 执行 `pnpm exec component-auto-docs check`,确认质量报告没有 error。
|
|
171
|
+
8. 使用 `pnpm docs:dev` 在 App 内访问 `/docs/index` 验证组件列表和详情页。
|
|
172
|
+
|
|
173
|
+
## 自定义组件文档页
|
|
174
|
+
|
|
175
|
+
`docs:init` 默认会生成 `src/docs/components/<component-name>/index.vue`。
|
|
176
|
+
|
|
177
|
+
如果某个组件需要更精细的业务示例或特殊预览,可以直接编辑对应页面。只要页面不再是自动生成模板,后续 `docs:init` 会保留它,不会强制覆盖。
|
|
178
|
+
|
|
179
|
+
建议自定义页面继续使用 `ComponentDocPage`,这样可以继承统一的标题、Tab、API、示例和说明展示。
|
|
180
|
+
|
|
181
|
+
## npm 包结构
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
component-auto-docs
|
|
185
|
+
├─ bin/component-auto-docs.mjs
|
|
186
|
+
├─ core/generate-component-docs.mjs
|
|
187
|
+
├─ templates/docs.config.mjs
|
|
188
|
+
├─ templates/docs/components/README.md
|
|
189
|
+
├─ templates/src/docs/index.vue
|
|
190
|
+
├─ templates/src/docs/runtime/component-doc-page.vue
|
|
191
|
+
├─ templates/src/docs/runtime/use-auto-component-doc.ts
|
|
192
|
+
├─ README.md
|
|
193
|
+
└─ package.json
|
|
194
|
+
```
|
|
98
195
|
|
|
99
|
-
|
|
196
|
+
职责划分:
|
|
100
197
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
4. 执行 `pnpm exec component-auto-docs init`,初始化组件元数据和文档页。
|
|
105
|
-
5. 人工优化各组件的 `docs.meta.json`。
|
|
106
|
-
6. 执行 `pnpm exec component-auto-docs gen` 生成文档。
|
|
107
|
-
7. 执行 `pnpm exec component-auto-docs check` 校验质量报告。
|
|
198
|
+
- `bin/component-auto-docs.mjs`:CLI 入口,负责命令分发和 scaffold。
|
|
199
|
+
- `core/generate-component-docs.mjs`:核心生成器,负责源码解析、元数据合并、文档生成和质量检查。
|
|
200
|
+
- `templates/*`:跨项目复制的配置、说明文档和页面运行时模板。
|
|
File without changes
|