@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
@@ -1,192 +1,57 @@
1
1
  ---
2
- layout: doc
2
+ layout: home
3
+
4
+ hero:
5
+ name: repoctl
6
+ text: 让 pnpm monorepo 的日常操作更短、更稳
7
+ tagline: 用一套 CLI 管理初始化、诊断、创建模板、提交前校验和模板资产同步。
8
+ image:
9
+ src: /logo.jpg
10
+ alt: repoctl logo
11
+ actions:
12
+ - theme: brand
13
+ text: 快速开始
14
+ link: /repoctl/getting-started
15
+ - theme: alt
16
+ text: 命令速查
17
+ link: /repoctl/commands
18
+
19
+ features:
20
+ - title: 从已有仓库开始
21
+ details: 安装 repoctl 后运行 setup 和 doctor,先把 workspace、根脚本、配置冲突和提交链路检查清楚。
22
+ - title: 用模板创建包和应用
23
+ details: repo new 支持交互式创建、指定模板、dry-run、JSON 输出和创建计划落盘。
24
+ - title: 把质量门禁变成日常命令
25
+ details: repo check 统一预览和执行 lint、typecheck、build、test、tsd 等推荐校验。
3
26
  ---
4
27
 
5
- # icebreaker's monorepo 模板
6
-
7
- 这套模板的目标很直接:用一套尽量短、尽量稳定的命令,把 `pnpm + Turborepo + TypeScript + 工程化校验 + changesets` 串成一个真正能落地的 monorepo 起步架子。
8
-
9
- 如果你只想知道最简单怎么用,先记住下面这 5 步。
10
-
11
- ## 先这样用
28
+ ## 最短路径
12
29
 
13
30
  ```bash
14
- pnpm install
15
- pnpm setup
16
- pnpm doctor
17
- pnpm new
18
- pnpm check
31
+ pnpm add -D repoctl
32
+ pnpm exec repo setup
33
+ pnpm exec repo doctor
34
+ pnpm exec repo new
35
+ pnpm exec repo check
19
36
  ```
20
37
 
21
- - `pnpm install`:安装整个 workspace 的依赖。
22
- - `pnpm setup`:同步当前仓库推荐的基础元信息和工具链配置。
23
- - `pnpm doctor`:检查你是不是站在正确的仓库根目录、Node 版本对不对、根脚本齐不齐、配置文件有没有冲突、提交链路是否完整。
24
- - `pnpm new`:创建一个新的 package 或 app。
25
- - `pnpm check`:执行推荐的本地校验,适合提交前快速确认。
26
-
27
- > 模板生成后的仓库优先推荐使用这些根脚本;底层实际对应的还是 `repo` CLI。`repoctl` 和 `@icebreakers/monorepo` 继续兼容,但不再是主文档入口。
28
-
29
- ## 最小心智模型
30
-
31
- 这个模板故意只保留三层命令入口:
32
-
33
- | 层级 | 推荐写法 | 适合什么场景 |
34
- | -------- | -------------------------------------------------------- | ---------------------------------------- |
35
- | 根脚本 | `pnpm setup` / `pnpm new` / `pnpm doctor` / `pnpm check` | 新人日常使用,最短、最不容易记错 |
36
- | 主 CLI | `pnpm exec repo ...` | 需要明确调用 CLI,或仓库还没同步根脚本时 |
37
- | 分组命令 | `repo ws up` / `repo tg init` / `repo skills sync` | 已经熟悉命令体系,想走更细粒度入口 |
38
-
39
- 简单理解:
40
-
41
- - 想上手,用 `pnpm ...`
42
- - 想看清楚实际做的是哪个命令,用 `repo ...`
43
- - 想做高级操作,再看分组命令
44
-
45
- ## 最常用的命令
46
-
47
- ### 1. 仓库初始化与新建
38
+ 在由模板生成的仓库里,同一套工作流会暴露成更短的根脚本:
48
39
 
49
40
  ```bash
50
41
  pnpm setup
51
- pnpm new my-package
52
- pnpm new my-app --template client
53
- ```
54
-
55
- - `setup` 是老仓库接入模板标准资产的第一步。
56
- - `new` 支持交互式选择,也支持 `--template` 直接指定模板。
57
- - 如果在 `repoctl.config.ts` 中设置了 `commands.create.defaultTemplate`,那么 `repo new foo` 会直接创建,不再多问一次模板。
58
-
59
- ### 2. 诊断、校验、同步
60
-
61
- ```bash
62
- pnpm doctor
63
- pnpm check
64
- pnpm exec repo upgrade
65
- ```
66
-
67
- - `doctor` 看“仓库能不能顺利开始使用”
68
- - `check` 看“当前改动能不能顺利提交”
69
- - `upgrade` 看“模板最新的标准资产要不要同步进来”
70
-
71
- 这三个命令不要混着理解:
72
-
73
- | 命令 | 解决的问题 |
74
- | --------- | ---------------------------------------------------- |
75
- | `doctor` | 当前目录是不是一个正确、完整、可用的 monorepo 根目录 |
76
- | `check` | 当前提交前校验是否能过 |
77
- | `upgrade` | 我要不要把最新模板里的脚本、配置、工作流同步过来 |
78
-
79
- ## 你现在拿到的基础架子
80
-
81
- | 目录 | 作用 |
82
- | --------------------- | ---------------------------------------------- |
83
- | `templates/cli` | TypeScript CLI 模板 |
84
- | `templates/client` | Vue 3 + Vite 客户端模板 |
85
- | `templates/server` | Hono 服务端模板 |
86
- | `templates/tsdown` | 使用 `tsdown` 的 TypeScript 类库模板 |
87
- | `templates/vue-lib` | Vue 组件库模板 |
88
- | `templates/vitepress` | 文档站模板 |
89
- | `packages/monorepo` | 真正的 CLI 核心实现、升级逻辑、tooling wrapper |
90
- | `packages/repoctl` | 面向使用者的默认包名与入口封装 |
91
-
92
- ## 推荐上手路径
93
-
94
- ### 场景 1:你刚用模板创建了一个新仓库
95
-
96
- ```bash
97
- pnpm install
98
42
  pnpm doctor
99
43
  pnpm new
100
44
  pnpm check
101
- pnpm build
102
- ```
103
-
104
- 这时通常不需要先跑 `upgrade`,因为模板本身已经是新生成的。
105
-
106
- ### 场景 2:你把 `repoctl` 接进一个已有仓库
107
-
108
- ```bash
109
- pnpm install
110
- pnpm exec repo setup
111
- pnpm exec repo doctor
112
- pnpm exec repo upgrade
113
- pnpm exec repo doctor
114
- ```
115
-
116
- 这里先 `doctor` 一次,是为了看现在缺什么;`upgrade` 之后再跑一次,可以确认问题是不是已经被修平。
117
-
118
- ## 配置文件约定
119
-
120
- 推荐只使用一个配置文件:
121
-
122
- ```txt
123
- repoctl.config.ts
124
- ```
125
-
126
- 兼容旧文件名:
127
-
128
- ```txt
129
- monorepo.config.ts
130
- ```
131
-
132
- 但两者不能同时存在。现在 CLI 会明确拒绝加载冲突配置,`repo doctor` 也会直接把这个问题标红。
133
-
134
- 最小示例:
135
-
136
- ```ts
137
- import { defineMonorepoConfig } from 'repoctl'
138
-
139
- export default defineMonorepoConfig({
140
- commands: {
141
- create: {
142
- defaultTemplate: 'tsdown',
143
- },
144
- upgrade: {
145
- skipOverwrite: true,
146
- },
147
- },
148
- })
149
- ```
150
-
151
- ## 默认质量门禁
152
-
153
- 模板默认鼓励你走这条链路:
154
-
155
- 1. `pnpm build`
156
- 2. `pnpm lint`
157
- 3. `pnpm typecheck`
158
- 4. `pnpm tsd`
159
- 5. `pnpm test`
160
-
161
- 如果仓库保留了默认的 `.husky` 与 `lint-staged.config.js`:
162
-
163
- - `pre-commit` 会聚焦 staged 文件
164
- - 样式文件会跑 `stylelint`
165
- - JS / TS / Vue 会跑 `eslint`
166
- - TS / Vue 相关文件会按 workspace 跑 `typecheck`
167
- - `pre-push` 会补跑整仓的 `lint`、`typecheck`,以及受影响包的 `build` / `test` / `tsd`
168
-
169
- ## 下一步看哪里
170
-
171
- - 想理解为什么这套模板这样拆:[为什么往 monorepo 方向演进](./monorepo/index.md)
172
- - 第一次接手仓库先看:[新手使用指南](./getting-started.md)
173
- - 想看真实的日常管理方式:[如何管理 monorepo](./monorepo/manage.md)
174
- - 想要最完整的命令速查:[命令速查](./monorepo/commands.md)
175
- - 命令报错了怎么处理:[排障指南](./monorepo/troubleshooting.md)
176
- - 要发包和生成 changelog:[发包与变更日志](./monorepo/publish.md)
177
-
178
- ## 兼容命令说明
179
-
180
- 下面这些命令依然可用:
181
-
182
- ```bash
183
- pnpm exec repoctl doctor
184
- pnpm exec repoctl new
185
- pnpm exec monorepo doctor
186
- pnpm exec monorepo ws up
187
45
  ```
188
46
 
189
- 只是文档不再优先推荐它们。现在主入口统一收口到:
47
+ ## 你可以继续阅读
190
48
 
191
- - `repo`
192
- - 以及生成仓库里的 `pnpm setup / pnpm new / pnpm doctor / pnpm check`
49
+ - [repoctl 概览](./repoctl/index.md)
50
+ - [快速开始](./repoctl/getting-started.md)
51
+ - [接入已有仓库](./repoctl/adopt-existing.md)
52
+ - [按场景选命令](./repoctl/scenarios.md)
53
+ - [命令速查](./repoctl/commands.md)
54
+ - [配置文件](./repoctl/config.md)
55
+ - [模板与创建](./repoctl/templates.md)
56
+ - [工作流与 CI](./repoctl/workflows.md)
57
+ - [知识库:为什么往 monorepo 方向演进](./monorepo/index.md)
@@ -1,291 +1,21 @@
1
1
  # 命令速查
2
2
 
3
- 这一页只保留高频、实用、容易记错的命令。
3
+ repoctl 现在是这套文档的主线。完整命令说明请阅读:
4
4
 
5
- ## 最推荐的入口
5
+ - [repoctl 命令速查](../repoctl/commands.md)
6
+ - [repoctl 模板与创建](../repoctl/templates.md)
7
+ - [repoctl 排障与报告](../repoctl/troubleshooting.md)
6
8
 
7
- 在模板生成后的仓库里,优先使用根脚本:
9
+ ## monorepo 知识点:为什么要统一命令入口
8
10
 
9
- ```bash
10
- pnpm setup
11
- pnpm doctor
12
- pnpm new
13
- pnpm check
14
- ```
11
+ monorepo 的难点通常不是“能不能跑某个工具”,而是团队成员是否能稳定地用同一套入口完成日常动作。
15
12
 
16
- 对应关系如下:
13
+ repoctl 把命令分成三层:
17
14
 
18
- | 根脚本 | 实际等价命令 |
19
- | ------------- | ------------- |
20
- | `pnpm setup` | `repo setup` |
21
- | `pnpm doctor` | `repo doctor` |
22
- | `pnpm new` | `repo new` |
23
- | `pnpm check` | `repo check` |
15
+ | 层级 | 示例 | 适合场景 |
16
+ | -------- | --------------------------------- | -------------------- |
17
+ | 根脚本 | `pnpm doctor` / `pnpm new` | 日常开发和团队教程 |
18
+ | 主 CLI | `pnpm exec repo doctor` | CI、脚本、排障和文档 |
19
+ | 分组命令 | `repo ws ls` / `repo env support` | 维护者和自动化 |
24
20
 
25
- ## 上手四连
26
-
27
- ### 新仓库
28
-
29
- ```bash
30
- pnpm install
31
- pnpm doctor
32
- pnpm new
33
- pnpm check
34
- ```
35
-
36
- ### 存量仓库接入
37
-
38
- ```bash
39
- pnpm install
40
- pnpm exec repo setup
41
- pnpm exec repo doctor
42
- pnpm exec repo upgrade
43
- pnpm exec repo doctor
44
- ```
45
-
46
- ## 顶层命令
47
-
48
- ### `repo setup`
49
-
50
- ```bash
51
- repo setup
52
- repo setup --yes
53
- repo setup --preset minimal
54
- repo setup --preset standard --force
55
- repo setup --overwrite
56
- ```
57
-
58
- 用途:
59
-
60
- - 初始化当前 workspace 的推荐默认值
61
- - 默认不覆盖已有 README、package.json、pnpm-workspace.yaml 和 tooling 配置
62
- - 会追加缺失的 `apps/*`、`packages/*`、`examples/*` workspace patterns
63
- - `--yes` 用于 CI / 非 TTY 环境,使用安全默认行为
64
- - 需要重写受管理文件时显式传 `--force` 或 `--overwrite`
65
-
66
- ### `repo doctor`
67
-
68
- ```bash
69
- repo doctor
70
- repo doctor --strict
71
- repo doctor --json
72
- repo doctor --json --out reports/doctor.json
73
- repo doctor --markdown --out reports/doctor.md
74
- repo doctor --markdown --redact --out reports/doctor.md
75
- ```
76
-
77
- 用途:
78
-
79
- - 诊断当前目录是不是可直接开始使用的 monorepo 根目录
80
- - 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、配置冲突、提交链路
81
- - `--strict` 会把 warning 也视为失败,适合 CI 门禁或团队模板验收
82
- - `--json` 只输出结构化报告,适合 CI、脚本和编辑器集成
83
- - `--markdown` 输出适合贴到 issue / PR 的摘要报告
84
- - `--redact` 会脱敏 workspace / cwd / home 绝对路径,适合发给外部协作者
85
- - `--out <file>` 把文本、JSON 或 Markdown 报告写入文件,仍会按 blocking issue 返回非零状态
86
-
87
- ### `repo new`
88
-
89
- ```bash
90
- repo new
91
- repo new sdk --template tsdown
92
- repo new docs --template vitepress
93
- repo new docs --template vitepress --dry-run
94
- repo new docs --template vitepress --json
95
- repo new docs --template vitepress --json --out plans/docs.json
96
- ```
97
-
98
- 用途:
99
-
100
- - 交互式或直接创建新的 package / app
101
- - `--dry-run` 只预览模板、目标目录、package 名称和输出文件,不写入磁盘
102
- - `--json` 以结构化数据输出创建预览,隐含 `--dry-run`
103
- - `--out <file>` 把当前创建预览写入文件,也隐含 `--dry-run`
104
- - 显式传入的 `--template` 会先校验,拼错时会失败并提示相近模板 key
105
-
106
- ### `repo templates`
107
-
108
- ```bash
109
- repo templates
110
- repo templates tsdown
111
- repo templates --category library
112
- repo templates --check
113
- repo templates --check --json
114
- repo templates --json
115
- repo templates --markdown
116
- repo templates tsdown --markdown
117
- repo templates --markdown --out docs/templates.md
118
- ```
119
-
120
- 用途:
121
-
122
- - 查看内置模板 key、分类、默认生成目录和用途
123
- - 传入模板 key 时查看单个模板详情
124
- - `--check` 检查内置模板元数据、目录、package.json 和临时文件
125
- - 在写自动化脚本时用 `--json` 获取结构化输出
126
- - 用 `--markdown` 生成可直接放进文档的模板表格或详情页
127
- - 用 `--out <file>` 把当前 JSON、Markdown 或文本输出写入文件
128
-
129
- ### `repo check`
130
-
131
- ```bash
132
- repo check
133
- repo check --staged
134
- repo check --full
135
- repo check --edit-file .git/COMMIT_EDITMSG
136
- repo check --dry-run
137
- repo check --json --out reports/check-plan.json
138
- repo check --markdown --out reports/check-plan.md
139
- repo check --markdown --redact --out reports/check-plan.md
140
- ```
141
-
142
- 用途:
143
-
144
- - 运行推荐的本地校验入口
145
- - `--staged` 偏 pre-commit
146
- - `--full` 偏 pre-push
147
- - `--edit-file` 用于 commit message 校验
148
- - `--dry-run` 只预览将要执行的校验
149
- - `--json` / `--out <file>` 输出校验计划,适合 CI、脚本和编辑器集成
150
- - `--markdown` 输出适合贴到 PR / issue 的校验计划摘要
151
- - `--redact` 会脱敏 cwd / home 绝对路径,适合发给外部协作者
152
-
153
- ### `repo upgrade`
154
-
155
- ```bash
156
- repo upgrade
157
- repo upgrade --yes
158
- repo upgrade --overwrite
159
- repo upgrade --no-overwrite
160
- repo upgrade --core
161
- repo upgrade -i
162
- repo upgrade -s
163
- ```
164
-
165
- 用途:
166
-
167
- - 同步仓库标准资产与脚本
168
-
169
- 常见参数:
170
-
171
- - `--core`:只同步核心配置,跳过 GitHub 相关资产
172
- - `-i`:交互式选择
173
- - `--yes` / `--overwrite`:非交互覆盖 drifted 标准资产,并迁移旧 tooling loader import
174
- - `--no-overwrite` / `-s`:保留已有 drifted 文件
175
- - 非 TTY 环境不会弹出选择框,也不会抛 prompt 退出错误
176
-
177
- ### 兼容命令
178
-
179
- ```bash
180
- repo sync
181
- repo clean --yes
182
- repo mirror
183
- ```
184
-
185
- - `sync`:兼容入口,本质上仍是升级同步
186
- - `clean`:清理选中的 workspace 包
187
- - `mirror`:设置 VS Code 相关镜像环境变量
188
-
189
- ## 分组命令
190
-
191
- ### workspace / ws
192
-
193
- ```bash
194
- repo workspace upgrade
195
- repo ws up
196
- repo workspace init
197
- repo ws ls
198
- repo ws ls --json --out reports/workspaces.json
199
- repo ws ls --markdown --redact --out reports/workspaces.md
200
- repo workspace clean --yes
201
- ```
202
-
203
- ### tooling / tg
204
-
205
- ```bash
206
- repo tooling init eslint vitest
207
- repo tg init --all --force
208
- ```
209
-
210
- ### package / pkg
211
-
212
- ```bash
213
- repo package create
214
- repo pkg new
215
- ```
216
-
217
- ### verify / v
218
-
219
- ```bash
220
- repo verify pre-commit
221
- repo verify pre-push
222
- repo verify commit-msg .git/COMMIT_EDITMSG
223
- repo verify staged-typecheck packages/app/src/main.ts
224
- ```
225
-
226
- ### env / e
227
-
228
- ```bash
229
- repo env info
230
- repo e i --json --out reports/env.json
231
- repo e i --markdown --redact --out reports/env.md
232
- repo env snapshot --json --out reports/snapshot.json
233
- repo env snapshot --markdown --redact --out reports/snapshot.md
234
- repo env snapshot --markdown --redact --strict --out reports/snapshot.md
235
- repo env paths --json --out reports/paths.json
236
- repo env paths --markdown --redact --out reports/paths.md
237
- repo env support --json --out reports/support.json
238
- repo env support --json --redact --out reports/support.json
239
- repo env support --markdown --redact --out reports/support.md
240
- repo env support --markdown --redact --strict --out reports/support.md
241
- repo env mirror
242
- ```
243
-
244
- ### config / cfg
245
-
246
- ```bash
247
- repo config inspect
248
- repo cfg i --json --out reports/config.json
249
- repo cfg i --markdown --redact --out reports/config.md
250
- ```
251
-
252
- ### skills / sk
253
-
254
- ```bash
255
- repo skills sync --codex
256
- repo sk s --claude
257
- ```
258
-
259
- ### ai / ai p
260
-
261
- ```bash
262
- repo ai prompt create --name checkout
263
- repo ai p new
264
- repo ai prompt create --tasks agentic/tasks.json -f
265
- ```
266
-
267
- ## `repo`、`repoctl`、`monorepo` 的关系
268
-
269
- 三者共用同一套 CLI 实现:
270
-
271
- ```bash
272
- repo doctor
273
- repoctl doctor
274
- monorepo doctor
275
- ```
276
-
277
- 都能用,但推荐顺序是:
278
-
279
- 1. `pnpm setup / doctor / new / check`
280
- 2. `repo ...`
281
- 3. `repoctl ...` 或 `monorepo ...` 仅作为兼容入口
282
-
283
- ## 什么时候用哪个命令
284
-
285
- | 你的问题 | 先用什么 |
286
- | -------------------------- | -------------- |
287
- | 仓库是不是搭对了 | `repo doctor` |
288
- | 我现在这次改动能不能过校验 | `repo check` |
289
- | 我要补齐模板最新脚本和配置 | `repo upgrade` |
290
- | 我要新增一个子包 | `repo new` |
291
- | 我要直接操作更细的模块 | 分组命令 |
21
+ 保留这个旧页面,是为了让已有链接继续可用,同时把读者导向新的 repoctl 命令文档。
@@ -1,6 +1,8 @@
1
1
  # 如何管理 monorepo
2
2
 
3
- 这一页只讲一件事:拿到这套模板后,日常到底怎么用,才是最省心的。
3
+ 这一页是 repoctl 文档后面的知识库页面。它不再重新解释所有命令参数,而是解释:为什么这些命令能让 monorepo 日常管理变简单。
4
+
5
+ 如果你只想查命令,直接看 [repoctl 工作流与 CI](../repoctl/workflows.md) 或 [repoctl 命令速查](../repoctl/commands.md)。
4
6
 
5
7
  ## 先记住默认工作流
6
8
 
@@ -20,6 +22,16 @@ pnpm build
20
22
  pnpm setup
21
23
  ```
22
24
 
25
+ 这个工作流背后的顺序是:
26
+
27
+ | 阶段 | 目标 |
28
+ | ---- | ------------------------------------------------ |
29
+ | 安装 | 让 workspace 依赖和本地包链接完整 |
30
+ | 诊断 | 先确认仓库结构、Node、脚本、配置和提交链路可用 |
31
+ | 创建 | 用模板生成新包,减少手写 package metadata 和配置 |
32
+ | 校验 | 在提交前复现默认 hook 和 workspace typecheck |
33
+ | 构建 | 最后再跑更重的全仓任务 |
34
+
23
35
  ## 命令分层
24
36
 
25
37
  这套模板故意把入口做得很少。
@@ -225,6 +237,7 @@ pnpm test
225
237
 
226
238
  ## 继续阅读
227
239
 
228
- - [命令速查](./commands.md)
229
- - [排障指南](./troubleshooting.md)
240
+ - [repoctl 工作流与 CI](../repoctl/workflows.md)
241
+ - [repoctl 命令速查](../repoctl/commands.md)
242
+ - [repoctl 排障与报告](../repoctl/troubleshooting.md)
230
243
  - [发包与变更日志](./publish.md)
@@ -7,6 +7,31 @@
7
7
  - changelog 可以稳定产出
8
8
  - 很容易接到 CI 里
9
9
 
10
+ repoctl 在发布流程里的位置很明确:它不替代 `changesets` 发布版本,而是在发布前帮你确认仓库状态、模板资产和校验计划。
11
+
12
+ ## repoctl 在发布前做什么
13
+
14
+ ```bash
15
+ pnpm exec repo doctor --strict
16
+ pnpm exec repo check --full
17
+ pnpm exec repo env support --markdown --redact --out reports/support.md
18
+ ```
19
+
20
+ | 命令 | 发布前价值 |
21
+ | ---------------------- | -------------------------------------------------------- |
22
+ | `repo doctor --strict` | 确认仓库结构、Node、脚本、配置和提交链路没有漂移 |
23
+ | `repo check --full` | 跑根脚本里的 lint/typecheck/test/build 计划 |
24
+ | `repo env support` | 保存环境、配置、doctor 和 check plan,方便发布失败后回溯 |
25
+
26
+ 发布本身仍交给 `changesets`:
27
+
28
+ ```bash
29
+ pnpm changeset
30
+ pnpm exec repo release stable
31
+ ```
32
+
33
+ 正式发布只走 `main`;`alpha`、`beta`、`rc`、`next` 只做 Changesets 的 prerelease,并发布对应 tag 包。
34
+
10
35
  ## 一条务实的发布流程
11
36
 
12
37
  先把顺序记住:
@@ -90,11 +115,10 @@ changeset 文件本身就是最便宜的“发布预告”。代码评审时顺
90
115
  ### 手动流程
91
116
 
92
117
  ```bash
93
- pnpm changeset version
94
- pnpm publish-packages
118
+ pnpm exec repo release stable
95
119
  ```
96
120
 
97
- `changeset version` 会做这些事:
121
+ `repo release stable` 会先执行构建、lint 和测试,再调用 `changeset version` 与 `changeset publish`。其中 `changeset version` 会做这些事:
98
122
 
99
123
  - 更新受影响包的版本号
100
124
  - 调整内部依赖版本
@@ -113,6 +137,10 @@ on:
113
137
  push:
114
138
  branches:
115
139
  - main
140
+ - alpha
141
+ - beta
142
+ - rc
143
+ - next
116
144
  workflow_dispatch:
117
145
 
118
146
  permissions:
@@ -126,6 +154,7 @@ env:
126
154
 
127
155
  jobs:
128
156
  release:
157
+ if: github.ref_name == 'main'
129
158
  runs-on: ubuntu-latest
130
159
  steps:
131
160
  - uses: actions/checkout@v4
@@ -139,9 +168,25 @@ jobs:
139
168
  - name: Create Release Pull Request or Publish to npm
140
169
  uses: changesets/action@v1
141
170
  with:
142
- publish: pnpm publish-packages
171
+ publish: pnpm exec repo release stable
143
172
  env:
144
173
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
174
+
175
+ prerelease:
176
+ if: github.ref_name != 'main'
177
+ runs-on: ubuntu-latest
178
+ steps:
179
+ - uses: actions/checkout@v4
180
+ - uses: pnpm/action-setup@v4
181
+ - uses: actions/setup-node@v4
182
+ with:
183
+ node-version: 24
184
+ cache: pnpm
185
+ - run: pnpm install
186
+ - run: git config user.name "github-actions[bot]"
187
+ - run: git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
188
+ - name: Publish Prerelease
189
+ run: pnpm exec repo release pre publish
145
190
  ```
146
191
 
147
192
  ## 关于 npm 鉴权
@@ -209,5 +254,6 @@ permissions:
209
254
  ## 继续阅读
210
255
 
211
256
  - [如何管理 monorepo](./manage.md)
212
- - [命令速查](./commands.md)
213
- - [排障指南](./troubleshooting.md)
257
+ - [repoctl 工作流与 CI](../repoctl/workflows.md)
258
+ - [repoctl 排障与报告](../repoctl/troubleshooting.md)
259
+ - [命令别名](../repoctl/aliases.md)