@icebreakers/monorepo-templates 1.0.2 → 1.0.4
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/assets/.github/workflows/release.yml +42 -2
- package/assets/commitlint.config.ts +1 -3
- package/assets/eslint.config.js +2 -14
- package/assets/lint-staged.config.js +1 -3
- package/assets/package.json +8 -6
- package/assets/stylelint.config.js +1 -3
- package/assets/tsconfig.json +2 -1
- package/assets/vitest.config.ts +1 -3
- package/assets-data.mjs +0 -1
- package/dist/cli.d.mts +1 -0
- package/dist/cli.mjs +12 -0
- package/dist/index.mjs +1 -260
- package/dist/prepare-CtCifHGT.mjs +306 -0
- package/package.json +2 -2
- package/templates/client/package.json +2 -2
- package/templates/client/vite.config.ts +27 -21
- package/templates/vitepress/.vitepress/config.ts +152 -69
- package/templates/vitepress/en/index.md +63 -0
- package/templates/vitepress/en/knowledge/monorepo.md +37 -0
- package/templates/vitepress/en/repoctl/adopt-existing.md +131 -0
- package/templates/vitepress/en/repoctl/aliases.md +71 -0
- package/templates/vitepress/en/repoctl/commands.md +120 -0
- package/templates/vitepress/en/repoctl/config.md +69 -0
- package/templates/vitepress/en/repoctl/getting-started.md +116 -0
- package/templates/vitepress/en/repoctl/index.md +74 -0
- package/templates/vitepress/en/repoctl/scenarios.md +117 -0
- package/templates/vitepress/en/repoctl/templates.md +128 -0
- package/templates/vitepress/en/repoctl/troubleshooting.md +96 -0
- package/templates/vitepress/en/repoctl/workflows.md +89 -0
- package/templates/vitepress/getting-started.md +21 -224
- package/templates/vitepress/index.md +47 -176
- package/templates/vitepress/monorepo/commands.md +13 -283
- package/templates/vitepress/monorepo/manage.md +16 -3
- package/templates/vitepress/monorepo/publish.md +52 -6
- package/templates/vitepress/monorepo/templates.md +14 -60
- package/templates/vitepress/monorepo/troubleshooting.md +14 -220
- package/templates/vitepress/package.json +3 -2
- package/templates/vitepress/repoctl/adopt-existing.md +135 -0
- package/templates/vitepress/repoctl/aliases.md +71 -0
- package/templates/vitepress/repoctl/commands.md +154 -0
- package/templates/vitepress/repoctl/config.md +81 -0
- package/templates/vitepress/repoctl/getting-started.md +122 -0
- package/templates/vitepress/repoctl/index.md +74 -0
- package/templates/vitepress/repoctl/scenarios.md +119 -0
- package/templates/vitepress/repoctl/templates.md +156 -0
- package/templates/vitepress/repoctl/troubleshooting.md +98 -0
- package/templates/vitepress/repoctl/workflows.md +105 -0
- package/templates/vitepress/tools/changeset.md +11 -0
- package/templates/vitepress/tools/husky.md +17 -0
- package/templates/vitepress/tools/lint-staged.md +10 -0
- package/templates/vitepress/tools/llms-txt.md +29 -0
- package/templates/vitepress/tools/pnpm.md +26 -0
- package/templates/vitepress/tools/turborepo.md +17 -0
- package/templates/vitepress/why/examples/2.npm-basic-package/README.md +1 -1
- package/templates/vitepress/why/examples/3.npm-basic-package/README.md +1 -1
- package/templates/vitepress/wrangler.jsonc +5 -0
- package/templates/vue-lib/package.json +1 -1
|
@@ -1,67 +1,21 @@
|
|
|
1
1
|
# 模板速查
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
模板创建已经收敛到 repoctl 文档:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- [repoctl 模板与创建](../repoctl/templates.md)
|
|
6
|
+
- [repoctl 快速开始](../repoctl/getting-started.md)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
| ------------- | -------- | --------------------- | ------------------ | ----------------------------------- |
|
|
9
|
-
| `tsdown` | library | `templates/tsdown` | `packages/tsdown` | 使用 tsdown 构建的 TypeScript 库包 |
|
|
10
|
-
| `vue-lib` | library | `templates/vue-lib` | `packages/vue-lib` | Vue 3 组件库模板,适合沉淀可复用 UI |
|
|
11
|
-
| `vue-hono` | app | `templates/client` | `apps/client` | Vue 3 + Hono 的前后端一体应用模板 |
|
|
12
|
-
| `hono-server` | service | `templates/server` | `apps/server` | Hono API 服务模板 |
|
|
13
|
-
| `vitepress` | docs | `templates/vitepress` | `apps/website` | VitePress 文档站模板 |
|
|
14
|
-
| `cli` | tool | `templates/cli` | `apps/cli` | TypeScript 命令行工具模板 |
|
|
8
|
+
## monorepo 知识点:模板为什么重要
|
|
15
9
|
|
|
16
|
-
|
|
10
|
+
当仓库里存在多种产物时,模板能把重复选择前置成稳定默认值:
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
| 产物 | 常见目录 | 关注点 |
|
|
13
|
+
| ------------- | ------------------------ | ------------------------------ |
|
|
14
|
+
| TypeScript 库 | `packages/*` | exports、types、构建和 tsd |
|
|
15
|
+
| Vue 组件库 | `packages/*` | SFC、样式校验、类型声明 |
|
|
16
|
+
| 应用 | `apps/*` | dev、build、部署资产 |
|
|
17
|
+
| 服务 | `apps/*` | API 入口、运行时类型、环境变量 |
|
|
18
|
+
| 文档站 | `apps/*` | VitePress 配置、导航、内容结构 |
|
|
19
|
+
| CLI | `apps/*` 或 `packages/*` | bin 入口、参数解析、发布 |
|
|
23
20
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
repo templates --json
|
|
28
|
-
repo templates tsdown --json
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
需要同步文档片段时:
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
repo templates --markdown
|
|
35
|
-
repo templates tsdown --markdown
|
|
36
|
-
repo templates --markdown --out docs/templates.md
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## 创建前预览
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
repo new sdk --template tsdown --dry-run
|
|
43
|
-
repo new website --template vitepress --dry-run
|
|
44
|
-
repo new website --template vitepress --json
|
|
45
|
-
repo new website --template vitepress --json --out plans/website.json
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
`--dry-run` 不写入磁盘,只展示模板、源目录、目标目录、package name 和输出的 package json 文件。
|
|
49
|
-
`--json` 输出同一份创建计划的结构化数据,隐含 `--dry-run`,适合 CI、编辑器和自动化脚本。
|
|
50
|
-
`--out <file>` 可以把文本或 JSON 预览写入文件,也隐含 `--dry-run`。
|
|
51
|
-
|
|
52
|
-
显式传入的 `--template` 会先校验。模板 key 拼错时,命令会失败并提示相近 key,而不是静默回退到默认模板。
|
|
53
|
-
|
|
54
|
-
## 健康检查
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
repo templates --check
|
|
58
|
-
repo templates --check --json
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
模板健康检查会确认:
|
|
62
|
-
|
|
63
|
-
- 模板 source / target 没有重复。
|
|
64
|
-
- 每个模板 source 目录都存在。
|
|
65
|
-
- 每个模板根目录都有 `package.json`。
|
|
66
|
-
- 每个模板都有 category 和 description。
|
|
67
|
-
- 模板源目录里没有会被脚手架过滤掉的临时或生成文件。
|
|
21
|
+
repoctl 的 `repo templates` 和 `repo new` 负责把这些约定落实到文件系统。
|
|
@@ -1,226 +1,20 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 常见问题排障
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
repoctl 排障文档已经集中到:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- [repoctl 排障与报告](../repoctl/troubleshooting.md)
|
|
6
|
+
- [repoctl 命令速查](../repoctl/commands.md)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
## monorepo 知识点:先区分问题类型
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
pnpm doctor
|
|
11
|
-
```
|
|
10
|
+
排障前先判断问题属于哪一类:
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
| 类型 | 先看什么 | 常用命令 |
|
|
13
|
+
| -------------- | ------------------------------------- | --------------------------------------- |
|
|
14
|
+
| 仓库结构问题 | 根目录、workspace 文件、Node 版本 | `repo doctor` |
|
|
15
|
+
| 模板创建问题 | 模板 key、目标目录、创建计划 | `repo templates` / `repo new --dry-run` |
|
|
16
|
+
| 提交前校验问题 | staged 文件、workspace 归属、任务路由 | `repo check --dry-run` |
|
|
17
|
+
| 环境差异问题 | Node、pnpm、Git、CI、路径 | `repo env support --markdown --redact` |
|
|
18
|
+
| 配置冲突问题 | `repoctl.config.ts` 与旧配置文件 | `repo config inspect` |
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
pnpm exec repo doctor --json --out reports/doctor.json
|
|
17
|
-
pnpm exec repo doctor --markdown --redact --out reports/doctor.md
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
需要让 CI 对 warning 也失败时:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
pnpm exec repo doctor --strict --json --out reports/doctor.json
|
|
24
|
-
pnpm exec repo doctor --strict --markdown --redact --out reports/doctor.md
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
需要把运行环境一起发给同事、CI 或机器人时:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
pnpm exec repo env paths --json --out reports/paths.json
|
|
31
|
-
pnpm exec repo env paths --markdown --redact --out reports/paths.md
|
|
32
|
-
pnpm exec repo config inspect --json --out reports/config.json
|
|
33
|
-
pnpm exec repo config inspect --markdown --redact --out reports/config.md
|
|
34
|
-
pnpm exec repo env info --json --out reports/env.json
|
|
35
|
-
pnpm exec repo env info --markdown --redact --out reports/env.md
|
|
36
|
-
pnpm exec repo env snapshot --json --out reports/snapshot.json
|
|
37
|
-
pnpm exec repo env snapshot --markdown --redact --out reports/snapshot.md
|
|
38
|
-
pnpm exec repo env snapshot --markdown --redact --strict --out reports/snapshot.md
|
|
39
|
-
pnpm exec repo env support --json --out reports/support.json
|
|
40
|
-
pnpm exec repo env support --markdown --redact --out reports/support.md
|
|
41
|
-
pnpm exec repo env support --markdown --redact --strict --out reports/support.md
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
`env paths` 会列出 repoctl / monorepo 配置文件的全部候选扩展名,不只检查 `.ts` 文件。
|
|
45
|
-
如果要把环境报告发给外部协作者,优先加 `--redact` 脱敏本机绝对路径;如果是贴到 issue 或 PR 评论里,用 `--markdown` 生成摘要。
|
|
46
|
-
在 CI 中可以再加 `--strict`,这样会先写出排障包,再在 `doctor` 有 fail 或 warn 时返回失败码。
|
|
47
|
-
|
|
48
|
-
它会优先帮你排这些低成本但高频的问题:
|
|
49
|
-
|
|
50
|
-
- 当前目录不是仓库根目录
|
|
51
|
-
- 缺少 `pnpm-workspace.yaml`
|
|
52
|
-
- Node 版本不满足要求
|
|
53
|
-
- 根 `package.json` 没装 `repoctl` / `@icebreakers/monorepo`
|
|
54
|
-
- 根快捷脚本没同步齐
|
|
55
|
-
- `repoctl.config.ts` 与 `monorepo.config.ts` 同时存在
|
|
56
|
-
- `.husky/pre-commit` 和 `lint-staged.config.js` 只配了一半
|
|
57
|
-
|
|
58
|
-
## 常见问题
|
|
59
|
-
|
|
60
|
-
### 1. 提示当前目录不像 monorepo 根目录
|
|
61
|
-
|
|
62
|
-
通常是因为你在子包目录里执行了命令,或者根目录缺少这些文件:
|
|
63
|
-
|
|
64
|
-
```txt
|
|
65
|
-
package.json
|
|
66
|
-
pnpm-workspace.yaml
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
先回到根目录再执行。
|
|
70
|
-
|
|
71
|
-
如果要确认 CLI 实际识别到了哪些 workspace 包,可以输出一份列表:
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
pnpm exec repo ws ls --json --out reports/workspaces.json
|
|
75
|
-
pnpm exec repo ws ls --markdown --redact --out reports/workspaces.md
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### 2. Node 版本不满足要求
|
|
79
|
-
|
|
80
|
-
看根 `package.json`:
|
|
81
|
-
|
|
82
|
-
```json
|
|
83
|
-
{
|
|
84
|
-
"engines": {
|
|
85
|
-
"node": ">=20.0.0"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
切到满足要求的 Node 版本后,再跑:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
pnpm install
|
|
94
|
-
pnpm doctor
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 3. `repoctl.config.ts` 和 `monorepo.config.ts` 同时存在
|
|
98
|
-
|
|
99
|
-
这是明确的冲突状态,不是“都能读”。
|
|
100
|
-
|
|
101
|
-
处理方式:
|
|
102
|
-
|
|
103
|
-
- 保留 `repoctl.config.ts`
|
|
104
|
-
- 删除 `monorepo.config.ts`
|
|
105
|
-
|
|
106
|
-
除非你在迁移历史仓库,否则没有必要双持。
|
|
107
|
-
|
|
108
|
-
### 4. 根脚本没有 `setup` / `new` / `check` / `doctor`
|
|
109
|
-
|
|
110
|
-
先同步一次标准资产:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
pnpm exec repo upgrade
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
CI 或非 TTY 环境使用:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
pnpm exec repo setup --yes
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 5. `repo new --template` 提示未知模板
|
|
123
|
-
|
|
124
|
-
先运行:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
pnpm exec repo templates
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
确认模板 key。`--template` 是严格校验的,拼写错误会直接失败;如果能判断出相近 key,CLI 会额外提示 `did you mean ...`。
|
|
131
|
-
|
|
132
|
-
如果你只是不想等,也可以手动把这些脚本加回根 `package.json`。
|
|
133
|
-
|
|
134
|
-
### 5. 提交前校验没有正常工作
|
|
135
|
-
|
|
136
|
-
先检查这两个文件是不是同时存在:
|
|
137
|
-
|
|
138
|
-
```txt
|
|
139
|
-
.husky/pre-commit
|
|
140
|
-
lint-staged.config.js
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
只存在一个,通常就是半残状态。
|
|
144
|
-
|
|
145
|
-
可选动作:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
pnpm exec repo upgrade
|
|
149
|
-
pnpm check
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 6. ESLint / Vitest 配置引用 `tooling/load-tooling-module.mjs`
|
|
153
|
-
|
|
154
|
-
这是旧模板生成的本仓库源码 loader。普通使用者仓库应该直接 import `repoctl/tooling`。
|
|
155
|
-
|
|
156
|
-
处理方式:
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
pnpm exec repo upgrade --yes
|
|
160
|
-
pnpm doctor
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
如果自动化里必须保留本地修改,用 `pnpm exec repo upgrade --no-overwrite` 查看 skipped 文件,再手动迁移。
|
|
164
|
-
|
|
165
|
-
### 7. `repo` 命令不可用
|
|
166
|
-
|
|
167
|
-
通常是依赖还没安装,或者当前仓库没把 CLI 包放进根依赖。
|
|
168
|
-
|
|
169
|
-
先执行:
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
pnpm install
|
|
173
|
-
pnpm doctor
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
如果根本没有安装 CLI 依赖,补一个即可:
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
pnpm add -D repoctl
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
## `doctor` 和 `check` 的区别
|
|
183
|
-
|
|
184
|
-
很多人遇到问题会这两个命令来回试,其实职责不同:
|
|
185
|
-
|
|
186
|
-
| 命令 | 更像什么 |
|
|
187
|
-
| -------- | ---------- |
|
|
188
|
-
| `doctor` | 仓库体检 |
|
|
189
|
-
| `check` | 提交前校验 |
|
|
190
|
-
|
|
191
|
-
如果你怀疑是“仓库架子不完整”,先用 `doctor`。
|
|
192
|
-
如果你怀疑是“这次改动过不了 lint / typecheck / test”,先用 `check`。
|
|
193
|
-
|
|
194
|
-
## 什么时候需要 `upgrade`
|
|
195
|
-
|
|
196
|
-
下面这些情况,优先考虑 `repo upgrade`:
|
|
197
|
-
|
|
198
|
-
- 文档里的根脚本在你仓库里没有
|
|
199
|
-
- 默认的 Husky / lint-staged / config 资产缺失
|
|
200
|
-
- 模板最近更新过,而你的仓库还是旧结构
|
|
201
|
-
- 你希望重新同步推荐默认值
|
|
202
|
-
|
|
203
|
-
## 一个实用排查顺序
|
|
204
|
-
|
|
205
|
-
大多数问题按这个顺序处理最省时间:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
pnpm install
|
|
209
|
-
pnpm doctor
|
|
210
|
-
pnpm exec repo upgrade
|
|
211
|
-
pnpm doctor
|
|
212
|
-
pnpm check
|
|
213
|
-
pnpm build
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
思路是:
|
|
217
|
-
|
|
218
|
-
1. 先把依赖装齐
|
|
219
|
-
2. 先修仓库架子问题
|
|
220
|
-
3. 再看当前改动的校验问题
|
|
221
|
-
|
|
222
|
-
## 还有问题时看哪里
|
|
223
|
-
|
|
224
|
-
- 日常命令边界不清楚:[命令速查](./commands.md)
|
|
225
|
-
- 不确定仓库怎么管理:[如何管理 monorepo](./manage.md)
|
|
226
|
-
- 发包问题:[发包与变更日志](./publish.md)
|
|
20
|
+
旧页面继续保留为知识点索引,具体排查步骤以后优先维护在 repoctl 分区。
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"name": "@icebreakers/website",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"version": "0.0.0",
|
|
5
|
-
"description": "https://
|
|
5
|
+
"description": "https://repo.icebreaker.top source code",
|
|
6
6
|
"author": "ice breaker <hi@sonofmagic.top>",
|
|
7
|
-
"homepage": "https://
|
|
7
|
+
"homepage": "https://repo.icebreaker.top",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/sonofmagic/monorepo-template.git",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"mermaid": "^11.14.0",
|
|
36
36
|
"tailwindcss": "^4.2.4",
|
|
37
37
|
"vitepress": "^1.6.4",
|
|
38
|
+
"vitepress-plugin-llms": "^1.12.2",
|
|
38
39
|
"vitepress-plugin-mermaid": "^2.0.17"
|
|
39
40
|
}
|
|
40
41
|
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# 接入已有仓库
|
|
2
|
+
|
|
3
|
+
repoctl 不只适合新模板仓库。它也可以渐进接入已有 pnpm workspace,用诊断报告和非覆盖同步把风险降下来。
|
|
4
|
+
|
|
5
|
+
## 适合接入的仓库
|
|
6
|
+
|
|
7
|
+
优先满足这些条件:
|
|
8
|
+
|
|
9
|
+
- 已经使用 pnpm 或准备迁移到 pnpm。
|
|
10
|
+
- 有根 `package.json`。
|
|
11
|
+
- 能接受 `apps/*`、`packages/*`、`examples/*` 这类 workspace 目录约定。
|
|
12
|
+
- 希望统一 `setup`、`doctor`、`new`、`check` 这类日常入口。
|
|
13
|
+
|
|
14
|
+
如果仓库还不是 pnpm workspace,先补最小 `pnpm-workspace.yaml`:
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
packages:
|
|
18
|
+
- apps/*
|
|
19
|
+
- packages/*
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 第一步:安装并初始化
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pnpm add -D repoctl
|
|
26
|
+
pnpm exec repo setup --yes
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`setup --yes` 会使用安全默认值。它会补齐推荐脚本和 workspace patterns,但不会无条件覆盖已有 README、package.json、pnpm-workspace.yaml 或 tooling 配置。
|
|
30
|
+
|
|
31
|
+
## 第二步:保存第一次诊断
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pnpm exec repo doctor --markdown --redact --out reports/doctor-before.md
|
|
35
|
+
pnpm exec repo doctor --json --out reports/doctor-before.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
建议把第一次报告提交到 PR 评论或 artifact,而不是只看终端输出。
|
|
39
|
+
|
|
40
|
+
重点看这些项:
|
|
41
|
+
|
|
42
|
+
| 检查项 | 常见问题 |
|
|
43
|
+
| ---------------------------- | ---------------------------------------------------- |
|
|
44
|
+
| `package-json` | 当前目录不是仓库根目录 |
|
|
45
|
+
| `workspace-manifest` | 缺少 `pnpm-workspace.yaml` |
|
|
46
|
+
| `node-version` | 根 package 没声明 `engines.node` 或版本不匹配 |
|
|
47
|
+
| `tool-package` | 没安装 `repoctl` |
|
|
48
|
+
| `root-scripts` | 缺少 `setup/new/check/doctor` |
|
|
49
|
+
| `config-file` | `repoctl.config.ts` 和 `monorepo.config.ts` 同时存在 |
|
|
50
|
+
| `commit-hooks` | Husky 和 lint-staged 只接了一半 |
|
|
51
|
+
| `workspace-package-coverage` | package.json 没被 workspace patterns 覆盖 |
|
|
52
|
+
|
|
53
|
+
## 第三步:保守同步标准资产
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pnpm exec repo upgrade --no-overwrite
|
|
57
|
+
pnpm exec repo doctor --markdown --redact --out reports/doctor-after.md
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`--no-overwrite` 适合第一次接入:它同步缺失资产,但保留已有 drifted 文件。你可以在 PR diff 里逐项看哪些配置要进一步迁移。
|
|
61
|
+
|
|
62
|
+
## 第四步:预览校验计划
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pnpm exec repo check --dry-run
|
|
66
|
+
pnpm exec repo check --json --out reports/check-plan.json
|
|
67
|
+
pnpm exec repo check --markdown --redact --out reports/check-plan.md
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
先看 plan,再决定要不要接入 hook 或 CI。
|
|
71
|
+
|
|
72
|
+
## 第五步:接入根脚本
|
|
73
|
+
|
|
74
|
+
如果 `setup` 已补齐根脚本,团队日常文档就可以改成:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
pnpm doctor
|
|
78
|
+
pnpm new
|
|
79
|
+
pnpm check
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
CI 和自动化脚本仍建议写完整 CLI:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pnpm exec repo doctor --strict
|
|
86
|
+
pnpm exec repo check --full
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 第六步:处理遗留配置
|
|
90
|
+
|
|
91
|
+
### 配置文件冲突
|
|
92
|
+
|
|
93
|
+
只保留:
|
|
94
|
+
|
|
95
|
+
```txt
|
|
96
|
+
repoctl.config.ts
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`monorepo.config.ts` 只是兼容旧项目。
|
|
100
|
+
|
|
101
|
+
### 本地 tooling loader
|
|
102
|
+
|
|
103
|
+
如果 `doctor` 提示 tooling 配置引用了本地源码 loader,使用:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
pnpm exec repo upgrade --yes
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
这个命令会迁移到 `repoctl/tooling` 入口。
|
|
110
|
+
|
|
111
|
+
### workspace patterns 不覆盖包
|
|
112
|
+
|
|
113
|
+
运行:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pnpm exec repo setup --yes
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
或手动扩展 `pnpm-workspace.yaml`。
|
|
120
|
+
|
|
121
|
+
## 推荐 PR 结构
|
|
122
|
+
|
|
123
|
+
存量仓库接入建议拆成小 PR:
|
|
124
|
+
|
|
125
|
+
1. 安装 `repoctl`,补 `setup/doctor/new/check` 根脚本。
|
|
126
|
+
2. 提交 `doctor-before` 和 `doctor-after` 报告。
|
|
127
|
+
3. 同步或迁移 tooling 配置。
|
|
128
|
+
4. 接入 hook 和 CI。
|
|
129
|
+
5. 用 `repo new --dry-run` 验证模板创建路径。
|
|
130
|
+
|
|
131
|
+
## 下一步
|
|
132
|
+
|
|
133
|
+
- [工作流与 CI](./workflows.md)
|
|
134
|
+
- [排障与报告](./troubleshooting.md)
|
|
135
|
+
- [配置文件](./config.md)
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# 命令别名
|
|
2
|
+
|
|
3
|
+
repoctl 保留了一组短别名,方便熟悉后在终端里少打字。团队文档仍建议优先写完整命令,减少新人理解成本。
|
|
4
|
+
|
|
5
|
+
## 包入口别名
|
|
6
|
+
|
|
7
|
+
`repoctl` 包提供多个 bin:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
repo
|
|
11
|
+
repoctl
|
|
12
|
+
monorepo
|
|
13
|
+
rc
|
|
14
|
+
mo
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
文档统一推荐 `repo`。
|
|
18
|
+
|
|
19
|
+
兼容入口仍然可用:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
repoctl doctor
|
|
23
|
+
monorepo doctor
|
|
24
|
+
rc doctor
|
|
25
|
+
mo doctor
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 顶层命令别名
|
|
29
|
+
|
|
30
|
+
| 推荐写法 | 兼容或短写 | 说明 |
|
|
31
|
+
| ---------------- | ----------- | ---------------- |
|
|
32
|
+
| `repo setup` | `repo init` | 初始化仓库默认值 |
|
|
33
|
+
| `repo upgrade` | `repo sync` | 同步模板标准资产 |
|
|
34
|
+
| `repo templates` | `repo tpl` | 查看或检查模板 |
|
|
35
|
+
|
|
36
|
+
## 分组命令别名
|
|
37
|
+
|
|
38
|
+
| 完整命令 | 短写 |
|
|
39
|
+
| ------------------------------ | --------------- |
|
|
40
|
+
| `repo workspace` | `repo ws` |
|
|
41
|
+
| `repo workspace upgrade` | `repo ws up` |
|
|
42
|
+
| `repo workspace list` | `repo ws ls` |
|
|
43
|
+
| `repo workspace clean` | `repo ws rm` |
|
|
44
|
+
| `repo tooling` | `repo tg` |
|
|
45
|
+
| `repo tooling init` | `repo tg i` |
|
|
46
|
+
| `repo package` | `repo pkg` |
|
|
47
|
+
| `repo package create` | `repo pkg new` |
|
|
48
|
+
| `repo verify` | `repo v` |
|
|
49
|
+
| `repo verify pre-push` | `repo v push` |
|
|
50
|
+
| `repo verify pre-commit` | `repo v commit` |
|
|
51
|
+
| `repo verify commit-msg` | `repo v msg` |
|
|
52
|
+
| `repo verify staged-typecheck` | `repo v tc` |
|
|
53
|
+
| `repo env` | `repo e` |
|
|
54
|
+
| `repo env info` | `repo e i` |
|
|
55
|
+
| `repo env snapshot` | `repo e s` |
|
|
56
|
+
| `repo env paths` | `repo e p` |
|
|
57
|
+
| `repo env support` | `repo e b` |
|
|
58
|
+
| `repo env mirror` | `repo e m` |
|
|
59
|
+
| `repo config` | `repo cfg` |
|
|
60
|
+
| `repo config inspect` | `repo cfg i` |
|
|
61
|
+
| `repo skills` | `repo sk` |
|
|
62
|
+
| `repo skills sync` | `repo sk s` |
|
|
63
|
+
| `repo ai prompt` | `repo ai p` |
|
|
64
|
+
| `repo ai prompt create` | `repo ai p new` |
|
|
65
|
+
|
|
66
|
+
## 推荐使用原则
|
|
67
|
+
|
|
68
|
+
- 新手教程写完整命令,例如 `pnpm exec repo doctor`。
|
|
69
|
+
- 团队 README 写根脚本,例如 `pnpm doctor`。
|
|
70
|
+
- 维护者脚本可以写短别名,但要在注释或文档里说明用途。
|
|
71
|
+
- CI 里优先写完整命令,方便日志搜索。
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# 命令速查
|
|
2
|
+
|
|
3
|
+
这一页只保留 repoctl 高频、实用、容易记错的命令。
|
|
4
|
+
|
|
5
|
+
## 最推荐入口
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm exec repo setup
|
|
9
|
+
pnpm exec repo doctor
|
|
10
|
+
pnpm exec repo templates
|
|
11
|
+
pnpm exec repo new
|
|
12
|
+
pnpm exec repo check
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
模板生成仓库里的短脚本:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm setup
|
|
19
|
+
pnpm doctor
|
|
20
|
+
pnpm new
|
|
21
|
+
pnpm check
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## `repo setup`
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
repo setup
|
|
28
|
+
repo setup --yes
|
|
29
|
+
repo setup --preset minimal
|
|
30
|
+
repo setup --preset standard --force
|
|
31
|
+
repo setup --overwrite
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
用途:
|
|
35
|
+
|
|
36
|
+
- 初始化当前 workspace 的推荐默认值。
|
|
37
|
+
- 默认不覆盖已有 README、package.json、pnpm-workspace.yaml 和 tooling 配置。
|
|
38
|
+
- 追加缺失的 `apps/*`、`packages/*`、`examples/*` workspace patterns。
|
|
39
|
+
- `--yes` 用于 CI 或非 TTY 环境。
|
|
40
|
+
- 需要重写受管理文件时显式传 `--force` 或 `--overwrite`。
|
|
41
|
+
|
|
42
|
+
## `repo doctor`
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
repo doctor
|
|
46
|
+
repo doctor --strict
|
|
47
|
+
repo doctor --json
|
|
48
|
+
repo doctor --json --out reports/doctor.json
|
|
49
|
+
repo doctor --markdown --redact --out reports/doctor.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
用途:
|
|
53
|
+
|
|
54
|
+
- 诊断当前目录是不是可直接开始使用的 monorepo 根目录。
|
|
55
|
+
- 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、配置冲突和提交链路。
|
|
56
|
+
- `--strict` 会把 warning 也视为失败,适合 CI 门禁。
|
|
57
|
+
- `--json` 和 `--markdown` 适合自动化、PR、issue 和外部协作。
|
|
58
|
+
- `--redact` 会脱敏 workspace、cwd、home 等绝对路径。
|
|
59
|
+
|
|
60
|
+
## `repo templates`
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
repo templates
|
|
64
|
+
repo templates tsdown
|
|
65
|
+
repo templates --category library
|
|
66
|
+
repo templates --check
|
|
67
|
+
repo templates --json
|
|
68
|
+
repo templates --markdown --out docs/templates.md
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
用途:
|
|
72
|
+
|
|
73
|
+
- 查看内置模板 key、分类、默认生成目录和用途。
|
|
74
|
+
- 检查模板元数据和源目录健康状态。
|
|
75
|
+
- 给脚本读取 JSON,或生成 Markdown 文档片段。
|
|
76
|
+
|
|
77
|
+
## `repo new`
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
repo new
|
|
81
|
+
repo new sdk --template tsdown
|
|
82
|
+
repo new docs --template vitepress
|
|
83
|
+
repo new docs --template vitepress --dry-run
|
|
84
|
+
repo new docs --template vitepress --json --out plans/docs.json
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
用途:
|
|
88
|
+
|
|
89
|
+
- 交互式或直接创建新的 package、app、service、docs 或 CLI。
|
|
90
|
+
- `--dry-run` 只预览模板、目标目录、package name 和输出文件。
|
|
91
|
+
- `--json` 输出结构化创建计划,隐含 `--dry-run`。
|
|
92
|
+
- 显式传入的 `--template` 会先校验,拼错时会失败并提示相近 key。
|
|
93
|
+
|
|
94
|
+
## `repo check`
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
repo check
|
|
98
|
+
repo check --staged
|
|
99
|
+
repo check --full
|
|
100
|
+
repo check --edit-file .git/COMMIT_EDITMSG
|
|
101
|
+
repo check --dry-run
|
|
102
|
+
repo check --json --out reports/check-plan.json
|
|
103
|
+
repo check --markdown --redact --out reports/check-plan.md
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
用途:
|
|
107
|
+
|
|
108
|
+
- 运行推荐的本地校验入口。
|
|
109
|
+
- `--staged` 偏 pre-commit。
|
|
110
|
+
- `--full` 偏 pre-push。
|
|
111
|
+
- `--edit-file` 用于 commit message 校验。
|
|
112
|
+
- `--dry-run` 只预览将要执行的校验。
|
|
113
|
+
|
|
114
|
+
## `repo upgrade`
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
repo upgrade
|
|
118
|
+
repo upgrade --yes
|
|
119
|
+
repo upgrade --overwrite
|
|
120
|
+
repo upgrade --no-overwrite
|
|
121
|
+
repo upgrade --core
|
|
122
|
+
repo upgrade -i
|
|
123
|
+
repo upgrade -s
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
用途:
|
|
127
|
+
|
|
128
|
+
- 同步仓库标准资产与脚本。
|
|
129
|
+
- `--core` 只同步核心配置,跳过 GitHub 相关资产。
|
|
130
|
+
- `-i` 交互式选择。
|
|
131
|
+
- `--no-overwrite` / `-s` 保留已有 drifted 文件。
|
|
132
|
+
- `--yes` / `--overwrite` 非交互覆盖 drifted 标准资产。
|
|
133
|
+
|
|
134
|
+
## 分组命令
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
repo ws ls
|
|
138
|
+
repo ws ls --json --out reports/workspaces.json
|
|
139
|
+
repo ws up
|
|
140
|
+
repo tg init --all
|
|
141
|
+
repo verify pre-commit
|
|
142
|
+
repo verify pre-push
|
|
143
|
+
repo env support --markdown --redact --out reports/support.md
|
|
144
|
+
repo config inspect
|
|
145
|
+
repo skills sync --codex
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
分组命令适合维护者和自动化脚本。日常开发优先使用顶层命令。
|
|
149
|
+
|
|
150
|
+
## 继续阅读
|
|
151
|
+
|
|
152
|
+
- [工作流与 CI](./workflows.md)
|
|
153
|
+
- [排障与报告](./troubleshooting.md)
|
|
154
|
+
- [命令别名](./aliases.md)
|