@icebreakers/monorepo-templates 1.0.4 → 1.0.5

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.
Files changed (45) hide show
  1. package/assets/package.json +6 -16
  2. package/package.json +1 -1
  3. package/templates/cli/package.json +1 -1
  4. package/templates/client/package.json +2 -2
  5. package/templates/client/worker-configuration.d.ts +8 -17
  6. package/templates/server/package.json +2 -2
  7. package/templates/server/worker-configuration.d.ts +8 -17
  8. package/templates/vitepress/.vitepress/config.ts +42 -5
  9. package/templates/vitepress/ai/index.md +33 -0
  10. package/templates/vitepress/ai/llms-txt.md +42 -0
  11. package/templates/vitepress/en/index.md +7 -7
  12. package/templates/vitepress/en/knowledge/monorepo.md +1 -1
  13. package/templates/vitepress/en/repoctl/adopt-existing.md +13 -11
  14. package/templates/vitepress/en/repoctl/aliases.md +3 -4
  15. package/templates/vitepress/en/repoctl/commands.md +12 -12
  16. package/templates/vitepress/en/repoctl/config.md +1 -1
  17. package/templates/vitepress/en/repoctl/getting-started.md +19 -19
  18. package/templates/vitepress/en/repoctl/index.md +10 -10
  19. package/templates/vitepress/en/repoctl/scenarios.md +6 -6
  20. package/templates/vitepress/en/repoctl/troubleshooting.md +2 -2
  21. package/templates/vitepress/en/repoctl/workflows.md +12 -12
  22. package/templates/vitepress/getting-started.md +3 -3
  23. package/templates/vitepress/index.md +11 -8
  24. package/templates/vitepress/knowledge/index.md +50 -0
  25. package/templates/vitepress/monorepo/commands.md +5 -5
  26. package/templates/vitepress/monorepo/index.md +14 -14
  27. package/templates/vitepress/monorepo/manage.md +21 -21
  28. package/templates/vitepress/monorepo/troubleshooting.md +1 -1
  29. package/templates/vitepress/repoctl/adopt-existing.md +22 -22
  30. package/templates/vitepress/repoctl/aliases.md +4 -5
  31. package/templates/vitepress/repoctl/checks.md +86 -0
  32. package/templates/vitepress/repoctl/commands.md +28 -14
  33. package/templates/vitepress/repoctl/config.md +10 -1
  34. package/templates/vitepress/repoctl/doctor.md +86 -0
  35. package/templates/vitepress/repoctl/execution-model.md +81 -0
  36. package/templates/vitepress/repoctl/getting-started.md +16 -16
  37. package/templates/vitepress/repoctl/index.md +40 -12
  38. package/templates/vitepress/repoctl/reports.md +94 -0
  39. package/templates/vitepress/repoctl/scenarios.md +6 -6
  40. package/templates/vitepress/repoctl/template-assets.md +116 -0
  41. package/templates/vitepress/repoctl/templates.md +3 -0
  42. package/templates/vitepress/repoctl/troubleshooting.md +15 -3
  43. package/templates/vitepress/repoctl/workflows.md +26 -13
  44. package/templates/vitepress/tools/index.md +38 -0
  45. package/templates/vitepress/tools/llms-txt.md +4 -24
@@ -0,0 +1,86 @@
1
+ ---
2
+ description: 说明 repoctl check 和 verify 的校验模式、pre-commit、staged typecheck、pre-push 与 commit-msg 链路。
3
+ ---
4
+
5
+ # repoctl 校验链路
6
+
7
+ `repo check` 是给人使用的统一入口,`repo verify` 是给 hook、CI 和脚本复用的底层入口。
8
+
9
+ ## 1. 模式速查
10
+
11
+ | 命令 | 模式 | 实际动作 |
12
+ | -------------------------------------------- | ------------ | -------------------------------------------------------------- |
13
+ | `repo check` | `default` | 执行 `repo verify pre-commit` |
14
+ | `repo check --staged` | `staged` | 执行 pre-commit,并按 staged TypeScript/Vue 文件路由 typecheck |
15
+ | `repo check --full` | `full` | 按根脚本执行 `lint`、`typecheck`、`test`、`build` 中存在的任务 |
16
+ | `repo check --edit-file .git/COMMIT_EDITMSG` | `commit-msg` | 执行 commit message 校验 |
17
+
18
+ 预览模式不会真正执行校验:
19
+
20
+ ```bash
21
+ repo check --dry-run
22
+ repo check --full --json --out reports/check-plan.json
23
+ repo check --markdown --redact --out reports/check-plan.md
24
+ ```
25
+
26
+ ## 2. pre-commit
27
+
28
+ `repo verify pre-commit` 默认执行 lint-staged。适合在提交前只处理 staged 文件,避免每次提交都跑整仓校验。
29
+
30
+ 推荐的 lint-staged 行为包括:
31
+
32
+ | 文件类型 | 推荐处理 |
33
+ | -------------------------- | ---------------------------------------- |
34
+ | JS、TS、Vue | ESLint 自动修复 |
35
+ | CSS、SCSS、Less、Vue style | Stylelint 自动修复 |
36
+ | TS、TSX、MTS、CTS、Vue | 路由到最近 workspace 的 `typecheck` 脚本 |
37
+
38
+ ## 3. staged typecheck
39
+
40
+ `repo verify staged-typecheck <files...>` 会根据文件路径向上查找最近的 workspace,并执行该 workspace 的 `typecheck`。
41
+
42
+ ```bash
43
+ repo verify staged-typecheck packages/ui/src/button.ts templates/client/src/App.vue
44
+ ```
45
+
46
+ 它解决的是 monorepo 里常见的问题:一个提交只改了某个包,不应该让所有 Vue 和 TypeScript workspace 都重复跑类型检查。
47
+
48
+ ## 4. pre-push
49
+
50
+ `repo verify pre-push` 面向推送前的完整保护。默认策略是:
51
+
52
+ | 阶段 | 行为 |
53
+ | ------------ | ------------------------------------------------ |
54
+ | 根任务 | 强制执行整仓 `lint` 与 `typecheck` |
55
+ | 变更范围任务 | 按 workspace 改动范围补跑 `build`、`test`、`tsd` |
56
+ | 失败处理 | 任一任务失败时停止并返回失败状态 |
57
+
58
+ 如果 CI 想要更明确地复现整仓校验,可以使用:
59
+
60
+ ```bash
61
+ repo check --full
62
+ ```
63
+
64
+ ## 5. commit message
65
+
66
+ `repo verify commit-msg <file>` 用于 Git 的 `commit-msg` hook。未配置自定义命令时,它会执行:
67
+
68
+ ```bash
69
+ pnpm exec commitlint --edit <file>
70
+ ```
71
+
72
+ 如果你只是手动验证当前提交信息,可以运行:
73
+
74
+ ```bash
75
+ repo check --edit-file .git/COMMIT_EDITMSG
76
+ ```
77
+
78
+ ## 6. 选择建议
79
+
80
+ | 场景 | 推荐命令 |
81
+ | ------------------ | ------------------------------------------------- |
82
+ | 本地提交前快速复现 | `repo check` |
83
+ | lint-staged 调试 | `repo check --staged --dry-run` |
84
+ | 推送前完整检查 | `repo check --full` |
85
+ | CI 门禁 | `repo doctor --strict` 后接 `repo check --full` |
86
+ | 只生成计划 | `repo check --json --out reports/check-plan.json` |
@@ -5,30 +5,30 @@
5
5
  ## 最推荐入口
6
6
 
7
7
  ```bash
8
- pnpm exec repo setup
8
+ pnpm exec repo init
9
9
  pnpm exec repo doctor
10
10
  pnpm exec repo templates
11
11
  pnpm exec repo new
12
12
  pnpm exec repo check
13
13
  ```
14
14
 
15
- 模板生成仓库里的短脚本:
15
+ 模板生成仓库里的推荐根脚本:
16
16
 
17
17
  ```bash
18
- pnpm setup
19
- pnpm doctor
20
- pnpm new
21
- pnpm check
18
+ pnpm run repo:init
19
+ pnpm run repo:doctor
20
+ pnpm run repo:new
21
+ pnpm run repo:check
22
22
  ```
23
23
 
24
- ## `repo setup`
24
+ ## `repo init`
25
25
 
26
26
  ```bash
27
- repo setup
28
- repo setup --yes
29
- repo setup --preset minimal
30
- repo setup --preset standard --force
31
- repo setup --overwrite
27
+ repo init
28
+ repo init --yes
29
+ repo init --preset minimal
30
+ repo init --preset standard --force
31
+ repo init --overwrite
32
32
  ```
33
33
 
34
34
  用途:
@@ -52,7 +52,7 @@ repo doctor --markdown --redact --out reports/doctor.md
52
52
  用途:
53
53
 
54
54
  - 诊断当前目录是不是可直接开始使用的 monorepo 根目录。
55
- - 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、配置冲突和提交链路。
55
+ - 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、遗留配置和提交链路。
56
56
  - `--strict` 会把 warning 也视为失败,适合 CI 门禁。
57
57
  - `--json` 和 `--markdown` 适合自动化、PR、issue 和外部协作。
58
58
  - `--redact` 会脱敏 workspace、cwd、home 等绝对路径。
@@ -147,8 +147,22 @@ repo skills sync --codex
147
147
 
148
148
  分组命令适合维护者和自动化脚本。日常开发优先使用顶层命令。
149
149
 
150
+ ## 输出参数速查
151
+
152
+ | 参数 | 适用命令 | 说明 |
153
+ | -------------- | -------------------------------------------- | ------------------------------------- |
154
+ | `--json` | `doctor`、`check`、`templates`、`new`、`env` | 输出机器可读数据 |
155
+ | `--markdown` | `doctor`、`check`、`templates`、`env` | 输出适合 PR 和 issue 的 Markdown |
156
+ | `--out <file>` | 多数报告和计划命令 | 写入文件,便于 CI artifact 或脚本读取 |
157
+ | `--redact` | `doctor`、`check`、`env` | 分享报告前脱敏本机路径 |
158
+ | `--strict` | `doctor`、`env snapshot`、`env support` | warning 也会导致失败 |
159
+ | `--dry-run` | `check`、`new` | 只看计划,不执行校验或写入文件 |
160
+
150
161
  ## 继续阅读
151
162
 
163
+ - [执行模型](./execution-model.md)
164
+ - [校验链路](./checks.md)
165
+ - [doctor 诊断](./doctor.md)
152
166
  - [工作流与 CI](./workflows.md)
153
- - [排障与报告](./troubleshooting.md)
167
+ - [报告与自动化输出](./reports.md)
154
168
  - [命令别名](./aliases.md)
@@ -6,7 +6,9 @@ repoctl 推荐在仓库根目录使用一个配置文件:
6
6
  repoctl.config.ts
7
7
  ```
8
8
 
9
- 旧文件名 `monorepo.config.ts` 继续兼容,但两者不能同时存在。`repo doctor` 会把冲突配置标记为阻塞问题。
9
+ `monorepo.config.ts` 已不再作为运行时配置入口。迁移旧仓库时请改名为 `repoctl.config.ts`。
10
+
11
+ repoctl 支持 `ts`、`mts`、`cts`、`js`、`mjs`、`cjs` 等配置文件后缀。新项目优先使用 `repoctl.config.ts`,这样能保留类型提示和更清晰的迁移路径。
10
12
 
11
13
  ## 最小配置
12
14
 
@@ -79,3 +81,10 @@ repo cfg i --markdown --redact --out reports/config.md
79
81
  - 团队长期一致的选择写进 `repoctl.config.ts`。
80
82
  - 临时行为用命令参数表达,例如 `--dry-run`、`--json`、`--out`。
81
83
  - 自动化脚本优先使用显式参数,减少隐藏状态。
84
+
85
+ ## 继续阅读
86
+
87
+ - [执行模型](./execution-model.md)
88
+ - [模板与创建](./templates.md)
89
+ - [模板资产治理](./template-assets.md)
90
+ - [报告与自动化输出](./reports.md)
@@ -0,0 +1,86 @@
1
+ ---
2
+ description: 说明 repoctl doctor 的检查项、状态含义、strict 模式和修复建议。
3
+ ---
4
+
5
+ # repoctl doctor 诊断
6
+
7
+ `repo doctor` 用来判断当前目录是不是一个可维护、可开发、可接入 repoctl 工作流的 pnpm monorepo 根目录。
8
+
9
+ ## 1. 状态含义
10
+
11
+ | 状态 | 含义 | 对退出码的影响 |
12
+ | ------ | -------------- | ----------------------------- |
13
+ | `pass` | 检查通过 | 不影响 |
14
+ | `warn` | 存在建议修复项 | 默认不失败,`--strict` 下失败 |
15
+ | `fail` | 阻塞项 | 命令返回失败状态 |
16
+
17
+ CI 中推荐使用:
18
+
19
+ ```bash
20
+ repo doctor --strict
21
+ ```
22
+
23
+ 这样 warning 不会长期堆积成隐性风险。
24
+
25
+ ## 2. 核心检查项
26
+
27
+ | 检查项 | 通过标准 | 常见修复 |
28
+ | ---------------------------- | ---------------------------------------------------------------- | ---------------------------- |
29
+ | `package-json` | 当前 workspace 根目录存在 `package.json` | 回到仓库根目录或先初始化项目 |
30
+ | `workspace-manifest` | 存在 `pnpm-workspace.yaml` | `repo init --yes` |
31
+ | `node-version` | 当前 Node 满足 `engines.node` | 切换 Node 版本或补充 engines |
32
+ | `tool-package` | 根依赖包含 `repoctl` | `pnpm add -D repoctl` |
33
+ | `root-scripts` | 存在 `repo:init`、`repo:new`、`repo:check`、`repo:doctor` 根脚本 | `repo init --yes` |
34
+ | `config-file` | 使用 `repoctl.config.ts`,且没有残留 `monorepo.config.ts` | 保留 `repoctl.config.ts` |
35
+ | `commit-hooks` | Husky 和 lint-staged 同时就绪 | `repo upgrade --yes` |
36
+ | `tooling-imports` | 配置不再引用本地源码 loader 或旧 config wrapper | `repo upgrade --yes` |
37
+ | `workspace-patterns` | 常见目录被 workspace patterns 覆盖 | `repo init --yes` |
38
+ | `workspace-package-coverage` | 常见目录下的包都被 pnpm 覆盖 | `repo init --yes` |
39
+
40
+ ## 3. 输出报告
41
+
42
+ ```bash
43
+ repo doctor
44
+ repo doctor --json
45
+ repo doctor --markdown --redact
46
+ repo doctor --json --out reports/doctor.json
47
+ repo doctor --markdown --redact --out reports/doctor.md
48
+ ```
49
+
50
+ 自动化脚本推荐使用 `pnpm run repo:doctor -- --json` 或 `pnpm exec repo doctor --json`。
51
+
52
+ | 输出 | 适合场景 |
53
+ | ------------ | --------------------------- |
54
+ | 默认交互文本 | 本地直接阅读 |
55
+ | JSON | CI、编辑器、脚本消费 |
56
+ | Markdown | 粘贴到 issue、PR 或排障文档 |
57
+ | `--redact` | 分享报告前隐藏本机绝对路径 |
58
+
59
+ ## 4. strict 模式
60
+
61
+ `--strict` 会把 warning 也视为失败。它适合放在 CI 早期阶段:
62
+
63
+ ```bash
64
+ pnpm install --frozen-lockfile
65
+ repo doctor --strict
66
+ repo check --full
67
+ ```
68
+
69
+ 如果你正在接入存量仓库,建议先不用 strict,把报告保存下来逐项修复:
70
+
71
+ ```bash
72
+ repo doctor --markdown --redact --out reports/doctor.md
73
+ repo upgrade --no-overwrite
74
+ repo doctor
75
+ ```
76
+
77
+ ## 5. 排查顺序
78
+
79
+ 建议按阻塞程度处理:
80
+
81
+ 1. 先处理 `fail`,否则命令或 CI 很可能无法继续。
82
+ 2. 再处理遗留配置和 Node 版本问题。
83
+ 3. 然后补根脚本、hook 和 lint-staged。
84
+ 4. 最后整理 workspace patterns 与 tooling imports。
85
+
86
+ 如果不确定报告能否安全分享,使用 [报告与自动化输出](./reports.md) 里的 `--redact` 和 `env support`。
@@ -0,0 +1,81 @@
1
+ ---
2
+ description: 说明 repoctl CLI 的入口层级、命令懒加载、非交互输出和脚本集成方式。
3
+ ---
4
+
5
+ # repoctl 执行模型
6
+
7
+ repoctl 的核心设计是把日常入口保持短,把细粒度能力放到分组命令里,并让 CI、编辑器和脚本可以读取结构化输出。
8
+
9
+ ## 1. 入口层级
10
+
11
+ | 层级 | 示例 | 使用场景 |
12
+ | ----------- | ------------------------------------------------------------------ | ------------------------------ |
13
+ | 根脚本 | `pnpm run repo:doctor`、`pnpm run repo:new`、`pnpm run repo:check` | 团队日常开发、README、贡献指南 |
14
+ | `repo` 命令 | `pnpm exec repo doctor` | 文档、CI、脚本、排障 |
15
+ | 分组命令 | `repo env support`、`repo verify pre-push` | 维护者、自动化和集成工具 |
16
+
17
+ ## 2. 命令执行过程
18
+
19
+ repoctl 启动时只注册命令树。具体实现会在 action 执行时再加载,因此查看帮助和列出命令不会提前扫描所有 workspace、Git 状态和模板文件。
20
+
21
+ ```txt
22
+ repo --help
23
+ -> 注册命令树
24
+ -> 输出帮助
25
+
26
+ repo doctor
27
+ -> 注册命令树
28
+ -> 加载 doctor 实现
29
+ -> 发现 workspace
30
+ -> 输出诊断报告
31
+ ```
32
+
33
+ 这种模型适合命令数量较多的 monorepo 工具:日常命令保持快,重逻辑只在真正执行时进入。
34
+
35
+ ## 3. 输出模式
36
+
37
+ 很多 repoctl 命令都同时服务人和机器:
38
+
39
+ | 参数 | 行为 | 典型用途 |
40
+ | -------------- | -------------------------------- | ------------------------ |
41
+ | `--json` | 输出结构化 JSON | CI、编辑器、脚本 |
42
+ | `--markdown` | 输出 Markdown 报告 | issue、PR、协作文档 |
43
+ | `--out <file>` | 写入文件 | 保存 artifact 或生成计划 |
44
+ | `--redact` | 脱敏 cwd、workspace、home 等路径 | 分享本机报告 |
45
+ | `--dry-run` | 只生成计划,不写入业务文件 | 审查创建和校验动作 |
46
+
47
+ `--json`、`--markdown`、`--out` 在 `repo check` 和 `repo new` 这类命令里会隐含预览语义,避免自动化读取计划时意外执行写入。
48
+
49
+ ## 4. 失败状态
50
+
51
+ repoctl 的失败状态遵循阻塞优先:
52
+
53
+ | 命令 | 什么时候失败 |
54
+ | ------------------------ | ----------------------------------------------------- |
55
+ | `repo doctor` | 存在 `fail` 检查项;加 `--strict` 时 warning 也会失败 |
56
+ | `repo templates --check` | 模板健康检查出现 fail |
57
+ | `repo new` | 模板不存在、目标校验失败或写入失败 |
58
+ | `repo check --full` | 任一 root script 校验失败 |
59
+ | `repo verify *` | 对应 hook 或校验命令失败 |
60
+
61
+ 如果只是想知道会发生什么,先加 `--dry-run` 或输出计划:
62
+
63
+ ```bash
64
+ repo new docs --template vitepress --json --out plans/docs.json
65
+ repo check --markdown --out reports/check-plan.md
66
+ ```
67
+
68
+ ## 5. 和配置文件的关系
69
+
70
+ repoctl 会从 workspace 根目录加载 `repoctl.config.*`。`monorepo.config.*` 已不再加载。
71
+
72
+ 配置加载后会影响具体命令,例如:
73
+
74
+ | 配置区域 | 影响命令 |
75
+ | ------------------ | ------------------------------------------------------------------- |
76
+ | `commands.init` | `repo init` |
77
+ | `commands.create` | `repo new` |
78
+ | `commands.upgrade` | `repo upgrade` |
79
+ | `tooling` | `repoctl/tooling` wrapper 生成的 ESLint、Vitest、lint-staged 等配置 |
80
+
81
+ 更多配置示例见:[配置文件](./config.md)。
@@ -26,7 +26,7 @@ pnpm add -D repoctl
26
26
 
27
27
  ```bash
28
28
  pnpm install
29
- pnpm exec repo setup
29
+ pnpm exec repo init
30
30
  pnpm exec repo doctor
31
31
  ```
32
32
 
@@ -35,8 +35,8 @@ pnpm exec repo doctor
35
35
  | 命令 | 作用 |
36
36
  | -------------- | --------------------------------------------------- |
37
37
  | `pnpm install` | 安装 workspace 依赖并创建本地链接 |
38
- | `repo setup` | 补齐推荐根脚本、workspace patterns 和基础工具链入口 |
39
- | `repo doctor` | 检查根目录、Node 版本、CLI 依赖、配置冲突和提交链路 |
38
+ | `repo init` | 补齐推荐根脚本、workspace patterns 和基础工具链入口 |
39
+ | `repo doctor` | 检查根目录、Node 版本、CLI 依赖、遗留配置和提交链路 |
40
40
 
41
41
  如果 `doctor` 报错,先按输出里的 `fix:` 处理。处理完再跑一次 `pnpm exec repo doctor`。
42
42
 
@@ -63,25 +63,25 @@ pnpm exec repo new sdk --template tsdown --json --out plans/sdk.json
63
63
 
64
64
  `--json` 和 `--out` 会隐含 `--dry-run`,适合 CI、编辑器和脚本读取创建计划。
65
65
 
66
- ## 使用短脚本
66
+ ## 使用根脚本
67
67
 
68
- 如果仓库已经通过 `repo setup` 或模板生成补齐了根脚本,日常可以写得更短:
68
+ 如果仓库已经通过 `repo init` 或模板生成补齐了根脚本,日常可以写得更短:
69
69
 
70
70
  ```bash
71
- pnpm setup
72
- pnpm doctor
73
- pnpm new sdk --template tsdown
74
- pnpm check
71
+ pnpm run repo:init
72
+ pnpm run repo:doctor -- --json
73
+ pnpm run repo:new -- sdk --template tsdown
74
+ pnpm run repo:check
75
75
  ```
76
76
 
77
77
  对应关系:
78
78
 
79
- | 短脚本 | 等价命令 |
80
- | ------------- | ----------------------- |
81
- | `pnpm setup` | `pnpm exec repo setup` |
82
- | `pnpm doctor` | `pnpm exec repo doctor` |
83
- | `pnpm new` | `pnpm exec repo new` |
84
- | `pnpm check` | `pnpm exec repo check` |
79
+ | 根脚本 | 等价命令 |
80
+ | ------------------------------ | ---------------------------- |
81
+ | `pnpm run repo:init` | `pnpm exec repo init` |
82
+ | `pnpm run repo:doctor -- args` | `pnpm exec repo doctor args` |
83
+ | `pnpm run repo:new -- args` | `pnpm exec repo new args` |
84
+ | `pnpm run repo:check` | `pnpm exec repo check` |
85
85
 
86
86
  ## 提交前检查
87
87
 
@@ -95,7 +95,7 @@ pnpm test
95
95
  如果只想走 repoctl 推荐的本地检查入口:
96
96
 
97
97
  ```bash
98
- pnpm check
98
+ pnpm run repo:check
99
99
  pnpm exec repo check --dry-run
100
100
  pnpm exec repo check --json --out reports/check-plan.json
101
101
  ```
@@ -8,7 +8,7 @@
8
8
 
9
9
  | 场景 | 推荐入口 |
10
10
  | ---------------------------------------- | ------------------------ |
11
- | 给已有 pnpm workspace 补齐标准脚本和配置 | `pnpm exec repo setup` |
11
+ | 给已有 pnpm workspace 补齐标准脚本和配置 | `pnpm exec repo init` |
12
12
  | 判断当前仓库是不是能顺利开发 | `pnpm exec repo doctor` |
13
13
  | 创建新的包、应用、文档站或 CLI | `pnpm exec repo new` |
14
14
  | 提交前复现推荐校验链路 | `pnpm exec repo check` |
@@ -17,21 +17,21 @@
17
17
 
18
18
  ## 推荐命令层级
19
19
 
20
- ### 1. 生成仓库里的短脚本
20
+ ### 1. 生成仓库里的 repo:\* 根脚本
21
21
 
22
22
  ```bash
23
- pnpm setup
24
- pnpm doctor
25
- pnpm new
26
- pnpm check
23
+ pnpm run repo:init
24
+ pnpm run repo:doctor
25
+ pnpm run repo:new
26
+ pnpm run repo:check
27
27
  ```
28
28
 
29
- 这是给日常开发和团队文档使用的入口。短、稳定、不需要先解释 CLI 包名。
29
+ 这是给日常开发和团队文档使用的入口。短、稳定、不需要先解释 CLI 包名,也不会和 pnpm 内置命令冲突。
30
30
 
31
31
  ### 2. 明确调用 repo CLI
32
32
 
33
33
  ```bash
34
- pnpm exec repo setup
34
+ pnpm exec repo init
35
35
  pnpm exec repo doctor
36
36
  pnpm exec repo templates
37
37
  pnpm exec repo new sdk --template tsdown
@@ -51,24 +51,52 @@ pnpm exec repo config inspect
51
51
 
52
52
  这些入口适合已经熟悉 repoctl 的维护者,用来做更细的 workspace、tooling、环境和配置操作。
53
53
 
54
- ## 和旧入口的关系
54
+ ## repoctl 管什么
55
55
 
56
- `repoctl` 包仍然提供兼容入口,例如:
56
+ repoctl 把 monorepo 里最容易分散的动作收敛为五条主线:
57
+
58
+ | 主线 | 代表命令 | 解决的问题 |
59
+ | ------ | ----------------------------- | --------------------------------------------------------- |
60
+ | 初始化 | `repo init` / `repo upgrade` | 生成或同步 workspace、根脚本、Husky、lint-staged 等资产 |
61
+ | 诊断 | `repo doctor` | 判断仓库根目录、运行时、脚本、配置和提交链路是否就绪 |
62
+ | 创建 | `repo templates` / `repo new` | 使用内置模板生成库、应用、服务、文档站和 CLI |
63
+ | 校验 | `repo check` / `repo verify` | 统一 pre-commit、staged typecheck、pre-push 和 commit-msg |
64
+ | 报告 | `repo env support` | 输出可保存、可脱敏、可给 CI 和协作者读取的上下文 |
65
+
66
+ 这几条主线都支持非交互参数。需要自动化时,优先使用 `--json`、`--markdown`、`--out <file>`、`--redact` 和 `--dry-run` 组合。
67
+
68
+ ## 新人和维护者的边界
69
+
70
+ | 角色 | 推荐只记住 | 需要深入时再看 |
71
+ | ---------- | ------------------------------------------------------------------ | ----------------------------------------------------------- |
72
+ | 新成员 | `pnpm run repo:doctor`、`pnpm run repo:new`、`pnpm run repo:check` | [按场景选命令](./scenarios.md) |
73
+ | 包维护者 | `repo templates`、`repo new --template`、`repo check --full` | [模板资产治理](./template-assets.md) |
74
+ | CI 维护者 | `repo doctor --strict`、`repo check --full`、`repo env support` | [报告与自动化输出](./reports.md) |
75
+ | 平台维护者 | `repo init`、`repo upgrade`、`repo config inspect` | [执行模型](./execution-model.md) 和 [配置文件](./config.md) |
76
+
77
+ ## 命令入口
78
+
79
+ `repoctl` 包提供多个 bin,例如:
57
80
 
58
81
  ```bash
59
82
  pnpm exec repoctl doctor
60
83
  pnpm exec repoctl new
61
84
  ```
62
85
 
63
- 文档统一推荐 `repo`,是为了减少新人需要记住的名字。底层实现仍来自同一套 CLI。
86
+ 文档统一推荐 `repo`,是为了减少新人需要记住的名字。底层实现来自同一套 CLI。
64
87
 
65
88
  ## 下一步
66
89
 
67
90
  - 第一次接入:[快速开始](./getting-started.md)
68
91
  - 不知道用哪个命令:[按场景选命令](./scenarios.md)
92
+ - 理解 CLI 怎么执行:[执行模型](./execution-model.md)
69
93
  - 查命令参数:[命令速查](./commands.md)
94
+ - 理解本地校验:[校验链路](./checks.md)
95
+ - 看 doctor 具体检查项:[doctor 诊断](./doctor.md)
70
96
  - 固化团队默认值:[配置文件](./config.md)
71
97
  - 看可创建的模板:[模板与创建](./templates.md)
98
+ - 治理模板资产:[模板资产治理](./template-assets.md)
72
99
  - 接入 CI 和本地流程:[工作流与 CI](./workflows.md)
73
- - 生成排障报告:[排障与报告](./troubleshooting.md)
100
+ - 生成机器可读报告:[报告与自动化输出](./reports.md)
101
+ - 排查常见问题:[排障与报告](./troubleshooting.md)
74
102
  - 熟悉短命令:[命令别名](./aliases.md)
@@ -0,0 +1,94 @@
1
+ ---
2
+ description: 说明 repoctl 的 JSON、Markdown、out、redact、env info、env snapshot 和 env support 报告能力。
3
+ ---
4
+
5
+ # 报告与自动化输出
6
+
7
+ repoctl 的报告能力用于把本地上下文变成可保存、可脱敏、可给脚本读取的文件。它适合 CI artifact、issue 模板、编辑器集成和跨机器排障。
8
+
9
+ ## 1. 通用输出参数
10
+
11
+ | 参数 | 支持命令示例 | 作用 |
12
+ | -------------- | --------------------------------------- | ------------------------------ |
13
+ | `--json` | `doctor`、`check`、`templates`、`env` | 输出结构化数据 |
14
+ | `--markdown` | `doctor`、`check`、`templates`、`env` | 输出便于阅读和粘贴的报告 |
15
+ | `--out <file>` | 多数报告命令 | 把输出写入文件 |
16
+ | `--redact` | `doctor`、`check`、`env` | 脱敏本机路径 |
17
+ | `--strict` | `doctor`、`env snapshot`、`env support` | 有 fail 或 warn 时返回失败状态 |
18
+
19
+ ## 2. env 子命令
20
+
21
+ | 命令 | 内容 | 适合用途 |
22
+ | ------------------- | -------------------------------------------- | ---------------- |
23
+ | `repo env info` | cwd、workspace、Node、pnpm、包数量等环境摘要 | 快速确认环境 |
24
+ | `repo env paths` | 关键路径和建议报告路径 | 统一报告落盘位置 |
25
+ | `repo env snapshot` | 环境、doctor 和 check plan | CI 快照 |
26
+ | `repo env support` | 环境、路径、配置、doctor 和 check plan | 完整排障包 |
27
+ | `repo env mirror` | VS Code binary mirror 设置 | 国内网络环境优化 |
28
+
29
+ 常用组合:
30
+
31
+ ```bash
32
+ repo env info --json --out reports/env.json
33
+ repo env snapshot --markdown --redact --out reports/snapshot.md
34
+ repo env support --markdown --redact --out reports/support.md
35
+ ```
36
+
37
+ ## 3. CI artifact 示例
38
+
39
+ ```bash
40
+ repo doctor --json --out reports/doctor.json
41
+ repo check --full --json --out reports/check-plan.json
42
+ repo env support --markdown --redact --out reports/support.md
43
+ ```
44
+
45
+ 建议把 `reports/` 上传为 artifact。这样 CI 失败时,不需要重新询问维护者使用了什么 Node、pnpm、workspace 根目录和校验计划。
46
+
47
+ ## 4. issue 排障模板
48
+
49
+ 当你需要把问题交给同事或维护者时,可以先生成 Markdown:
50
+
51
+ ```bash
52
+ repo env support --markdown --redact --out reports/support.md
53
+ ```
54
+
55
+ 然后在 issue 里附上:
56
+
57
+ | 内容 | 来源 |
58
+ | ------------- | ----------------- |
59
+ | 环境摘要 | `env info` |
60
+ | 配置命中情况 | `config inspect` |
61
+ | doctor 失败项 | `doctor` |
62
+ | check 计划 | `check --dry-run` |
63
+ | 推荐报告路径 | `env paths` |
64
+
65
+ ## 5. 什么时候使用 JSON
66
+
67
+ JSON 适合机器判断,不适合人工长时间阅读:
68
+
69
+ ```bash
70
+ repo doctor --json --out reports/doctor.json
71
+ repo templates --check --json --out reports/templates.json
72
+ repo new docs --template vitepress --json --out plans/docs.json
73
+ ```
74
+
75
+ 常见消费方式:
76
+
77
+ | 目标 | 使用方式 |
78
+ | ------------------- | ------------------------------------ |
79
+ | CI 判断是否有阻塞项 | 读取 `doctor.summary.fail` |
80
+ | 编辑器展示模板列表 | 读取 `repo templates --json` |
81
+ | 预览创建结果 | 读取 `repo new --json` |
82
+ | 审计模板健康状态 | 读取 `repo templates --check --json` |
83
+
84
+ ## 6. 什么时候使用 Markdown
85
+
86
+ Markdown 适合给人看,尤其适合 PR、issue 和协作文档:
87
+
88
+ ```bash
89
+ repo doctor --markdown --redact --out reports/doctor.md
90
+ repo check --markdown --redact --out reports/check-plan.md
91
+ repo templates --markdown --out docs/templates.md
92
+ ```
93
+
94
+ 如果报告要离开本机,默认加 `--redact`。
@@ -6,14 +6,14 @@
6
6
 
7
7
  ```bash
8
8
  pnpm install
9
- pnpm doctor
9
+ pnpm run repo:doctor
10
10
  ```
11
11
 
12
- 如果 `pnpm doctor` 不存在:
12
+ 如果 `repo:*` 根脚本还不存在:
13
13
 
14
14
  ```bash
15
15
  pnpm add -D repoctl
16
- pnpm exec repo setup --yes
16
+ pnpm exec repo init --yes
17
17
  pnpm exec repo doctor
18
18
  ```
19
19
 
@@ -23,7 +23,7 @@ pnpm exec repo doctor
23
23
 
24
24
  ```bash
25
25
  pnpm add -D repoctl
26
- pnpm exec repo setup --yes
26
+ pnpm exec repo init --yes
27
27
  pnpm exec repo doctor --markdown --redact --out reports/doctor-before.md
28
28
  pnpm exec repo upgrade --no-overwrite
29
29
  pnpm exec repo doctor --markdown --redact --out reports/doctor-after.md
@@ -42,7 +42,7 @@ pnpm exec repo new docs --template vitepress --dry-run
42
42
  如果只是日常开发,根脚本也可以:
43
43
 
44
44
  ```bash
45
- pnpm new sdk --template tsdown
45
+ pnpm run repo:new -- sdk --template tsdown
46
46
  ```
47
47
 
48
48
  继续看:[模板与创建](./templates.md)。
@@ -50,7 +50,7 @@ pnpm new sdk --template tsdown
50
50
  ## 我要提交前自查
51
51
 
52
52
  ```bash
53
- pnpm check
53
+ pnpm run repo:check
54
54
  pnpm exec repo check --dry-run
55
55
  pnpm exec repo check --full
56
56
  ```