@icebreakers/monorepo-templates 1.0.2 → 1.0.3

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 (50) hide show
  1. package/assets/.github/workflows/release.yml +42 -2
  2. package/assets/commitlint.config.ts +1 -3
  3. package/assets/eslint.config.js +2 -14
  4. package/assets/lint-staged.config.js +1 -3
  5. package/assets/package.json +8 -6
  6. package/assets/stylelint.config.js +1 -3
  7. package/assets/tsconfig.json +2 -1
  8. package/assets/vitest.config.ts +1 -3
  9. package/assets-data.mjs +0 -1
  10. package/dist/cli.d.mts +1 -0
  11. package/dist/cli.mjs +12 -0
  12. package/dist/index.mjs +1 -260
  13. package/dist/prepare-CtCifHGT.mjs +306 -0
  14. package/package.json +2 -2
  15. package/templates/client/package.json +1 -1
  16. package/templates/vitepress/.vitepress/config.ts +142 -69
  17. package/templates/vitepress/en/index.md +57 -0
  18. package/templates/vitepress/en/knowledge/monorepo.md +37 -0
  19. package/templates/vitepress/en/repoctl/adopt-existing.md +131 -0
  20. package/templates/vitepress/en/repoctl/aliases.md +71 -0
  21. package/templates/vitepress/en/repoctl/commands.md +120 -0
  22. package/templates/vitepress/en/repoctl/config.md +69 -0
  23. package/templates/vitepress/en/repoctl/getting-started.md +116 -0
  24. package/templates/vitepress/en/repoctl/index.md +74 -0
  25. package/templates/vitepress/en/repoctl/scenarios.md +117 -0
  26. package/templates/vitepress/en/repoctl/templates.md +128 -0
  27. package/templates/vitepress/en/repoctl/troubleshooting.md +96 -0
  28. package/templates/vitepress/en/repoctl/workflows.md +89 -0
  29. package/templates/vitepress/getting-started.md +21 -224
  30. package/templates/vitepress/index.md +41 -176
  31. package/templates/vitepress/monorepo/commands.md +13 -283
  32. package/templates/vitepress/monorepo/manage.md +16 -3
  33. package/templates/vitepress/monorepo/publish.md +52 -6
  34. package/templates/vitepress/monorepo/templates.md +14 -60
  35. package/templates/vitepress/monorepo/troubleshooting.md +14 -220
  36. package/templates/vitepress/repoctl/adopt-existing.md +135 -0
  37. package/templates/vitepress/repoctl/aliases.md +71 -0
  38. package/templates/vitepress/repoctl/commands.md +154 -0
  39. package/templates/vitepress/repoctl/config.md +81 -0
  40. package/templates/vitepress/repoctl/getting-started.md +122 -0
  41. package/templates/vitepress/repoctl/index.md +74 -0
  42. package/templates/vitepress/repoctl/scenarios.md +119 -0
  43. package/templates/vitepress/repoctl/templates.md +156 -0
  44. package/templates/vitepress/repoctl/troubleshooting.md +98 -0
  45. package/templates/vitepress/repoctl/workflows.md +105 -0
  46. package/templates/vitepress/tools/changeset.md +11 -0
  47. package/templates/vitepress/tools/husky.md +17 -0
  48. package/templates/vitepress/tools/lint-staged.md +10 -0
  49. package/templates/vitepress/tools/pnpm.md +26 -0
  50. package/templates/vitepress/tools/turborepo.md +17 -0
@@ -0,0 +1,81 @@
1
+ # 配置文件
2
+
3
+ repoctl 推荐在仓库根目录使用一个配置文件:
4
+
5
+ ```txt
6
+ repoctl.config.ts
7
+ ```
8
+
9
+ 旧文件名 `monorepo.config.ts` 继续兼容,但两者不能同时存在。`repo doctor` 会把冲突配置标记为阻塞问题。
10
+
11
+ ## 最小配置
12
+
13
+ ```ts
14
+ import { defineMonorepoConfig } from 'repoctl'
15
+
16
+ export default defineMonorepoConfig({
17
+ commands: {
18
+ create: {
19
+ defaultTemplate: 'tsdown',
20
+ },
21
+ },
22
+ })
23
+ ```
24
+
25
+ 设置 `commands.create.defaultTemplate` 后:
26
+
27
+ ```bash
28
+ repo new utils
29
+ ```
30
+
31
+ 会直接按默认模板创建,不再询问模板类型。
32
+
33
+ ## 常用配置
34
+
35
+ ```ts
36
+ import { defineMonorepoConfig } from 'repoctl'
37
+
38
+ export default defineMonorepoConfig({
39
+ commands: {
40
+ init: {
41
+ preset: 'standard',
42
+ },
43
+ create: {
44
+ defaultTemplate: 'tsdown',
45
+ },
46
+ clean: {
47
+ autoConfirm: true,
48
+ },
49
+ upgrade: {
50
+ skipOverwrite: true,
51
+ },
52
+ },
53
+ })
54
+ ```
55
+
56
+ | 配置 | 作用 |
57
+ | --------------------------------- | --------------------------------------- |
58
+ | `commands.init.preset` | 控制初始化默认预设 |
59
+ | `commands.create.defaultTemplate` | 控制 `repo new <name>` 的默认模板 |
60
+ | `commands.clean.autoConfirm` | 清理命令是否默认确认 |
61
+ | `commands.upgrade.skipOverwrite` | 同步标准资产时是否保留已有 drifted 文件 |
62
+
63
+ ## 查看当前配置
64
+
65
+ ```bash
66
+ repo config inspect
67
+ repo cfg i --json --out reports/config.json
68
+ repo cfg i --markdown --redact --out reports/config.md
69
+ ```
70
+
71
+ `--redact` 适合把报告发到 issue、PR 或外部协作渠道。
72
+
73
+ ## 配置的定位
74
+
75
+ 配置文件只负责团队默认值,不建议把一次性命令参数都写进去。
76
+
77
+ 推荐做法:
78
+
79
+ - 团队长期一致的选择写进 `repoctl.config.ts`。
80
+ - 临时行为用命令参数表达,例如 `--dry-run`、`--json`、`--out`。
81
+ - 自动化脚本优先使用显式参数,减少隐藏状态。
@@ -0,0 +1,122 @@
1
+ # 快速开始
2
+
3
+ 这一页按“把 repoctl 接进一个仓库”的顺序写。你不需要先理解所有工具,先让仓库能被诊断、能创建包、能跑提交前校验。
4
+
5
+ ## 准备环境
6
+
7
+ - Node.js 20 或更高版本。
8
+ - pnpm。推荐通过 Corepack 启用:`corepack enable`。
9
+ - Git。`repo doctor` 会读取仓库信息,用来补全 package metadata 和诊断提交链路。
10
+
11
+ ```bash
12
+ node -v
13
+ pnpm -v
14
+ git --version
15
+ ```
16
+
17
+ ## 安装 repoctl
18
+
19
+ ```bash
20
+ pnpm add -D repoctl
21
+ ```
22
+
23
+ 如果你使用的是这套模板生成的新仓库,依赖和根脚本通常已经准备好了,可以直接从 `pnpm install` 开始。
24
+
25
+ ## 初始化仓库默认值
26
+
27
+ ```bash
28
+ pnpm install
29
+ pnpm exec repo setup
30
+ pnpm exec repo doctor
31
+ ```
32
+
33
+ 这三步分别解决:
34
+
35
+ | 命令 | 作用 |
36
+ | -------------- | --------------------------------------------------- |
37
+ | `pnpm install` | 安装 workspace 依赖并创建本地链接 |
38
+ | `repo setup` | 补齐推荐根脚本、workspace patterns 和基础工具链入口 |
39
+ | `repo doctor` | 检查根目录、Node 版本、CLI 依赖、配置冲突和提交链路 |
40
+
41
+ 如果 `doctor` 报错,先按输出里的 `fix:` 处理。处理完再跑一次 `pnpm exec repo doctor`。
42
+
43
+ ## 创建第一个包
44
+
45
+ 先看模板列表:
46
+
47
+ ```bash
48
+ pnpm exec repo templates
49
+ ```
50
+
51
+ 创建一个 TypeScript 库:
52
+
53
+ ```bash
54
+ pnpm exec repo new sdk --template tsdown
55
+ ```
56
+
57
+ 创建前只想预览:
58
+
59
+ ```bash
60
+ pnpm exec repo new sdk --template tsdown --dry-run
61
+ pnpm exec repo new sdk --template tsdown --json --out plans/sdk.json
62
+ ```
63
+
64
+ `--json` 和 `--out` 会隐含 `--dry-run`,适合 CI、编辑器和脚本读取创建计划。
65
+
66
+ ## 使用短脚本
67
+
68
+ 如果仓库已经通过 `repo setup` 或模板生成补齐了根脚本,日常可以写得更短:
69
+
70
+ ```bash
71
+ pnpm setup
72
+ pnpm doctor
73
+ pnpm new sdk --template tsdown
74
+ pnpm check
75
+ ```
76
+
77
+ 对应关系:
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` |
85
+
86
+ ## 提交前检查
87
+
88
+ ```bash
89
+ pnpm build
90
+ pnpm lint
91
+ pnpm typecheck
92
+ pnpm test
93
+ ```
94
+
95
+ 如果只想走 repoctl 推荐的本地检查入口:
96
+
97
+ ```bash
98
+ pnpm check
99
+ pnpm exec repo check --dry-run
100
+ pnpm exec repo check --json --out reports/check-plan.json
101
+ ```
102
+
103
+ ## 同步模板标准资产
104
+
105
+ 当模板升级后,用 `upgrade` 同步新的默认配置和脚本:
106
+
107
+ ```bash
108
+ pnpm exec repo upgrade
109
+ pnpm exec repo upgrade --no-overwrite
110
+ pnpm exec repo upgrade --yes
111
+ ```
112
+
113
+ - `--no-overwrite`:保留已有 drifted 文件。
114
+ - `--yes` / `--overwrite`:适合明确要覆盖标准资产的自动化场景。
115
+ - 非 TTY 环境不会弹出交互提示。
116
+
117
+ ## 常见下一步
118
+
119
+ - 已有仓库渐进接入:阅读 [接入已有仓库](./adopt-existing.md)。
120
+ - 想固定默认模板:阅读 [配置文件](./config.md)。
121
+ - 想查看所有模板:阅读 [模板与创建](./templates.md)。
122
+ - 想把诊断结果发给同事:阅读 [排障与报告](./troubleshooting.md)。
@@ -0,0 +1,74 @@
1
+ # repoctl 概览
2
+
3
+ `repoctl` 是这套模板推荐给使用者的包名。默认命令是 `repo`,目标是把 pnpm workspace、Turborepo、模板创建、诊断报告和提交前校验收敛到一组稳定入口里。
4
+
5
+ 它不替代 pnpm、Turbo 或 changesets,而是把这些工具在 monorepo 里的常见动作串起来。
6
+
7
+ ## 什么时候使用 repoctl
8
+
9
+ | 场景 | 推荐入口 |
10
+ | ---------------------------------------- | ------------------------ |
11
+ | 给已有 pnpm workspace 补齐标准脚本和配置 | `pnpm exec repo setup` |
12
+ | 判断当前仓库是不是能顺利开发 | `pnpm exec repo doctor` |
13
+ | 创建新的包、应用、文档站或 CLI | `pnpm exec repo new` |
14
+ | 提交前复现推荐校验链路 | `pnpm exec repo check` |
15
+ | 同步模板最新标准资产 | `pnpm exec repo upgrade` |
16
+ | 给 CI、编辑器或脚本读取结构化结果 | `--json --out <file>` |
17
+
18
+ ## 推荐命令层级
19
+
20
+ ### 1. 生成仓库里的短脚本
21
+
22
+ ```bash
23
+ pnpm setup
24
+ pnpm doctor
25
+ pnpm new
26
+ pnpm check
27
+ ```
28
+
29
+ 这是给日常开发和团队文档使用的入口。短、稳定、不需要先解释 CLI 包名。
30
+
31
+ ### 2. 明确调用 repo CLI
32
+
33
+ ```bash
34
+ pnpm exec repo setup
35
+ pnpm exec repo doctor
36
+ pnpm exec repo templates
37
+ pnpm exec repo new sdk --template tsdown
38
+ pnpm exec repo check --dry-run
39
+ ```
40
+
41
+ 这是文档、CI、脚本和排障里最清楚的写法。
42
+
43
+ ### 3. 分组命令
44
+
45
+ ```bash
46
+ pnpm exec repo ws ls
47
+ pnpm exec repo tg init --all
48
+ pnpm exec repo env support --markdown --redact
49
+ pnpm exec repo config inspect
50
+ ```
51
+
52
+ 这些入口适合已经熟悉 repoctl 的维护者,用来做更细的 workspace、tooling、环境和配置操作。
53
+
54
+ ## 和旧入口的关系
55
+
56
+ `repoctl` 包仍然提供兼容入口,例如:
57
+
58
+ ```bash
59
+ pnpm exec repoctl doctor
60
+ pnpm exec repoctl new
61
+ ```
62
+
63
+ 文档统一推荐 `repo`,是为了减少新人需要记住的名字。底层实现仍来自同一套 CLI。
64
+
65
+ ## 下一步
66
+
67
+ - 第一次接入:[快速开始](./getting-started.md)
68
+ - 不知道用哪个命令:[按场景选命令](./scenarios.md)
69
+ - 查命令参数:[命令速查](./commands.md)
70
+ - 固化团队默认值:[配置文件](./config.md)
71
+ - 看可创建的模板:[模板与创建](./templates.md)
72
+ - 接入 CI 和本地流程:[工作流与 CI](./workflows.md)
73
+ - 生成排障报告:[排障与报告](./troubleshooting.md)
74
+ - 熟悉短命令:[命令别名](./aliases.md)
@@ -0,0 +1,119 @@
1
+ # 按场景选命令
2
+
3
+ 如果你不确定该用哪个 repoctl 命令,先从这一页开始。
4
+
5
+ ## 我刚拿到一个仓库
6
+
7
+ ```bash
8
+ pnpm install
9
+ pnpm doctor
10
+ ```
11
+
12
+ 如果 `pnpm doctor` 不存在:
13
+
14
+ ```bash
15
+ pnpm add -D repoctl
16
+ pnpm exec repo setup --yes
17
+ pnpm exec repo doctor
18
+ ```
19
+
20
+ 继续看:[快速开始](./getting-started.md)。
21
+
22
+ ## 我要把 repoctl 接入旧仓库
23
+
24
+ ```bash
25
+ pnpm add -D repoctl
26
+ pnpm exec repo setup --yes
27
+ pnpm exec repo doctor --markdown --redact --out reports/doctor-before.md
28
+ pnpm exec repo upgrade --no-overwrite
29
+ pnpm exec repo doctor --markdown --redact --out reports/doctor-after.md
30
+ ```
31
+
32
+ 继续看:[接入已有仓库](./adopt-existing.md)。
33
+
34
+ ## 我要创建新包或应用
35
+
36
+ ```bash
37
+ pnpm exec repo templates
38
+ pnpm exec repo new sdk --template tsdown
39
+ pnpm exec repo new docs --template vitepress --dry-run
40
+ ```
41
+
42
+ 如果只是日常开发,根脚本也可以:
43
+
44
+ ```bash
45
+ pnpm new sdk --template tsdown
46
+ ```
47
+
48
+ 继续看:[模板与创建](./templates.md)。
49
+
50
+ ## 我要提交前自查
51
+
52
+ ```bash
53
+ pnpm check
54
+ pnpm exec repo check --dry-run
55
+ pnpm exec repo check --full
56
+ ```
57
+
58
+ 如果你想保存计划:
59
+
60
+ ```bash
61
+ pnpm exec repo check --json --out reports/check-plan.json
62
+ pnpm exec repo check --markdown --redact --out reports/check-plan.md
63
+ ```
64
+
65
+ 继续看:[工作流与 CI](./workflows.md)。
66
+
67
+ ## 我要调试 CI 或同事机器问题
68
+
69
+ ```bash
70
+ pnpm exec repo doctor --markdown --redact --out reports/doctor.md
71
+ pnpm exec repo env support --markdown --redact --out reports/support.md
72
+ pnpm exec repo env snapshot --json --out reports/snapshot.json
73
+ ```
74
+
75
+ 继续看:[排障与报告](./troubleshooting.md)。
76
+
77
+ ## 我要同步模板标准资产
78
+
79
+ ```bash
80
+ pnpm exec repo upgrade --no-overwrite
81
+ pnpm exec repo upgrade --yes
82
+ pnpm exec repo upgrade --core
83
+ ```
84
+
85
+ 选择建议:
86
+
87
+ | 目标 | 命令 |
88
+ | ------------------------ | ----------------------------- |
89
+ | 第一次接入,保留已有配置 | `repo upgrade --no-overwrite` |
90
+ | 明确要覆盖标准资产 | `repo upgrade --yes` |
91
+ | 只同步核心配置 | `repo upgrade --core` |
92
+
93
+ ## 我要看 workspace 结构
94
+
95
+ ```bash
96
+ pnpm exec repo ws ls
97
+ pnpm exec repo ws ls --json --out reports/workspaces.json
98
+ pnpm exec repo ws ls --markdown --redact --out reports/workspaces.md
99
+ ```
100
+
101
+ ## 我要看配置是否生效
102
+
103
+ ```bash
104
+ pnpm exec repo config inspect
105
+ pnpm exec repo cfg i --json --out reports/config.json
106
+ ```
107
+
108
+ 继续看:[配置文件](./config.md)。
109
+
110
+ ## 我要写更短的命令
111
+
112
+ ```bash
113
+ repo tpl
114
+ repo ws ls
115
+ repo e support --markdown --redact
116
+ repo cfg i
117
+ ```
118
+
119
+ 继续看:[命令别名](./aliases.md)。
@@ -0,0 +1,156 @@
1
+ # 模板与创建
2
+
3
+ repoctl 的模板由 `@icebreakers/monorepo-templates` 维护。CLI、脚手架和文档都复用同一份模板元数据。
4
+
5
+ ## 内置模板
6
+
7
+ | Key | Category | 默认目录 | 适合场景 |
8
+ | ------------- | -------- | ------------------ | --------------------------- |
9
+ | `tsdown` | library | `packages/tsdown` | TypeScript 库包 |
10
+ | `vue-lib` | library | `packages/vue-lib` | Vue 3 组件库 |
11
+ | `vue-hono` | app | `apps/client` | Vue 3 + Hono 前后端一体应用 |
12
+ | `hono-server` | service | `apps/server` | Hono API 服务 |
13
+ | `vitepress` | docs | `apps/website` | VitePress 文档站 |
14
+ | `cli` | tool | `apps/cli` | TypeScript 命令行工具 |
15
+
16
+ ## 查看模板
17
+
18
+ ```bash
19
+ repo templates
20
+ repo templates tsdown
21
+ repo templates --category library
22
+ repo templates --json
23
+ repo templates --markdown --out docs/templates.md
24
+ ```
25
+
26
+ ## 创建模板
27
+
28
+ ```bash
29
+ repo new sdk --template tsdown
30
+ repo new ui --template vue-lib
31
+ repo new api --template hono-server
32
+ repo new website --template vitepress
33
+ repo new toolbox --template cli
34
+ ```
35
+
36
+ 普通名字会自动放到模板约定的目录里,例如库包进入 `packages/`,应用进入 `apps/`。如果你传入带 `/` 的路径,例如 `packages/shared-utils`,repoctl 会尊重这个路径。
37
+
38
+ ## 按目标选择模板
39
+
40
+ ### 要发布 npm 库
41
+
42
+ ```bash
43
+ repo new sdk --template tsdown
44
+ ```
45
+
46
+ 生成后先检查:
47
+
48
+ - `package.json` 的 `name`、`exports`、`types`。
49
+ - `tsdown.config.ts` 是否符合产物格式。
50
+ - 是否需要补 `tsd` 类型测试。
51
+
52
+ ### 要沉淀 Vue 组件
53
+
54
+ ```bash
55
+ repo new ui --template vue-lib
56
+ ```
57
+
58
+ 生成后先检查:
59
+
60
+ - 组件入口是否只导出稳定 API。
61
+ - 样式是否能通过 Stylelint。
62
+ - 文档站或示例应用是否需要同步创建。
63
+
64
+ ### 要创建应用或服务
65
+
66
+ ```bash
67
+ repo new web --template vue-hono
68
+ repo new api --template hono-server
69
+ ```
70
+
71
+ 生成后先检查:
72
+
73
+ - 运行时环境变量和部署平台约束。
74
+ - `dev`、`build`、`typecheck` 脚本是否接入根任务。
75
+ - 是否需要在 CI 里加入 E2E 或集成测试。
76
+
77
+ ### 要创建文档站
78
+
79
+ ```bash
80
+ repo new docs --template vitepress
81
+ ```
82
+
83
+ 生成后先检查:
84
+
85
+ - 导航和 sidebar 是否围绕产品或包名组织。
86
+ - 是否需要中英文 locale。
87
+ - 是否需要把 `repo templates --markdown` 输出写进文档。
88
+
89
+ ### 要创建 CLI
90
+
91
+ ```bash
92
+ repo new toolbox --template cli
93
+ ```
94
+
95
+ 生成后先检查:
96
+
97
+ - `bin` 字段是否符合最终命令名。
98
+ - 参数解析、退出码和帮助信息是否可测试。
99
+ - 是否需要把命令用法写入 README。
100
+
101
+ ## 创建前预览
102
+
103
+ ```bash
104
+ repo new website --template vitepress --dry-run
105
+ repo new website --template vitepress --json
106
+ repo new website --template vitepress --json --out plans/website.json
107
+ ```
108
+
109
+ `--dry-run` 不写入磁盘,只展示模板、源目录、目标目录、package name 和输出文件。
110
+
111
+ `--json` 输出同一份创建计划的结构化数据,隐含 `--dry-run`。
112
+
113
+ `--out <file>` 可以把文本或 JSON 预览写入文件,也隐含 `--dry-run`。
114
+
115
+ ## 固化默认模板
116
+
117
+ ```ts
118
+ import { defineMonorepoConfig } from 'repoctl'
119
+
120
+ export default defineMonorepoConfig({
121
+ commands: {
122
+ create: {
123
+ defaultTemplate: 'tsdown',
124
+ },
125
+ },
126
+ })
127
+ ```
128
+
129
+ 之后:
130
+
131
+ ```bash
132
+ repo new utils
133
+ ```
134
+
135
+ 会直接创建 `tsdown` 库包。
136
+
137
+ ## 检查模板健康状态
138
+
139
+ ```bash
140
+ repo templates --check
141
+ repo templates --check --json
142
+ ```
143
+
144
+ 模板检查会确认:
145
+
146
+ - 模板 source 和 target 没有重复。
147
+ - 每个模板 source 目录都存在。
148
+ - 每个模板根目录都有 `package.json`。
149
+ - 每个模板都有 category 和 description。
150
+ - 模板源目录里没有会被脚手架过滤掉的临时或生成文件。
151
+
152
+ ## 继续阅读
153
+
154
+ - [接入已有仓库](./adopt-existing.md)
155
+ - [工作流与 CI](./workflows.md)
156
+ - [配置文件](./config.md)
@@ -0,0 +1,98 @@
1
+ # 排障与报告
2
+
3
+ repoctl 的排障重点不是让你猜错在哪里,而是尽量输出可以复现、可以保存、可以发给同事的报告。
4
+
5
+ ## 先跑 doctor
6
+
7
+ ```bash
8
+ repo doctor
9
+ repo doctor --strict
10
+ ```
11
+
12
+ `doctor` 主要检查:
13
+
14
+ - 当前目录是不是仓库根目录。
15
+ - Node 版本是否满足要求。
16
+ - `pnpm-workspace.yaml` 是否存在。
17
+ - `repoctl` 是否作为 CLI 依赖安装。
18
+ - 根脚本是否齐全。
19
+ - `repoctl.config.ts` 和 `monorepo.config.ts` 是否冲突。
20
+ - Husky 与 lint-staged 是否都接上。
21
+
22
+ ## 保存诊断报告
23
+
24
+ ```bash
25
+ repo doctor --json --out reports/doctor.json
26
+ repo doctor --markdown --redact --out reports/doctor.md
27
+ ```
28
+
29
+ 推荐把 Markdown 报告贴到 issue 或 PR。`--redact` 会脱敏本机路径。
30
+
31
+ ## 查看校验计划
32
+
33
+ ```bash
34
+ repo check --dry-run
35
+ repo check --json --out reports/check-plan.json
36
+ repo check --markdown --redact --out reports/check-plan.md
37
+ ```
38
+
39
+ 当你不确定为什么某个文件触发了 workspace typecheck、pre-push 要跑哪些任务时,先看 check plan。
40
+
41
+ ## 收集环境信息
42
+
43
+ ```bash
44
+ repo env info
45
+ repo env support --markdown --redact --out reports/support.md
46
+ repo env snapshot --json --out reports/snapshot.json
47
+ repo env paths --markdown --redact --out reports/paths.md
48
+ ```
49
+
50
+ 这些命令适合排查 Node、pnpm、workspace、Git、路径和 CI 环境差异。
51
+
52
+ ## 常见问题
53
+
54
+ ### 当前目录不是仓库根目录
55
+
56
+ 切回包含 `pnpm-workspace.yaml` 和根 `package.json` 的目录,再运行:
57
+
58
+ ```bash
59
+ repo doctor
60
+ ```
61
+
62
+ ### 同时存在两个配置文件
63
+
64
+ 只保留一个:
65
+
66
+ ```txt
67
+ repoctl.config.ts
68
+ ```
69
+
70
+ `monorepo.config.ts` 是兼容旧项目的文件名,新项目不建议继续使用。
71
+
72
+ ### `repo new` 提示模板不存在
73
+
74
+ 先查看可用模板:
75
+
76
+ ```bash
77
+ repo templates
78
+ ```
79
+
80
+ 显式传入的 `--template` 会先校验。拼错时命令会失败并提示相近 key,不会静默回退。
81
+
82
+ ### 自动化里不希望出现交互
83
+
84
+ 使用非交互参数:
85
+
86
+ ```bash
87
+ repo setup --yes
88
+ repo upgrade --no-overwrite
89
+ repo check --json --out reports/check-plan.json
90
+ ```
91
+
92
+ 非 TTY 环境下,repoctl 不会弹出交互选择框。
93
+
94
+ ## 继续阅读
95
+
96
+ - [工作流与 CI](./workflows.md)
97
+ - [命令速查](./commands.md)
98
+ - [命令别名](./aliases.md)