@icebreakers/monorepo-templates 0.1.15 → 1.0.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 +12 -0
- package/assets/.changeset/config.json +7 -2
- package/assets/.github/workflows/ci.yml +8 -2
- package/assets/.github/workflows/release.yml +2 -2
- package/assets/.husky/commit-msg +1 -1
- package/assets/.husky/pre-commit +1 -1
- package/assets/.husky/pre-push +5 -0
- package/assets/.vscode/settings.json +1 -6
- package/assets/AGENTS.md +8 -7
- package/assets/commitlint.config.ts +2 -2
- package/assets/eslint.config.js +2 -6
- package/assets/lint-staged.config.js +3 -0
- package/assets/package.json +39 -28
- package/assets/repoctl.config.ts +68 -0
- package/assets/stylelint.config.js +2 -2
- package/assets/tooling/ensure-tooling-built.mjs +24 -0
- package/assets/tooling/load-tooling-module.mjs +71 -0
- package/assets/tsconfig.json +1 -49
- package/assets/turbo.json +17 -6
- package/assets/vitest.config.ts +2 -125
- package/assets-data.mjs +4 -2
- package/dist/index.d.mts +22 -1
- package/dist/index.mjs +114 -30
- package/package.json +12 -8
- package/template-data.mjs +48 -8
- package/templates/client/eslint.config.js +6 -4
- package/templates/client/package.json +22 -22
- package/templates/client/vite.config.ts +4 -3
- package/templates/client/wrangler.jsonc +1 -6
- package/templates/server/package.json +4 -4
- package/templates/server/src/app.ts +4 -4
- package/templates/server/tsconfig.json +1 -2
- package/templates/server/vitest.config.ts +6 -5
- package/templates/server/wrangler.jsonc +1 -6
- package/templates/tsdown/package.json +2 -1
- package/templates/tsdown/test-d/index.test-d.ts +5 -0
- package/templates/tsdown/tsconfig.json +1 -2
- package/templates/tsdown/vitest.config.ts +6 -5
- package/templates/vitepress/.vitepress/config.ts +34 -36
- package/templates/vitepress/getting-started.md +243 -0
- package/templates/vitepress/gitignore +2 -1
- package/templates/vitepress/index.md +144 -79
- package/templates/vitepress/monorepo/commands.md +281 -0
- package/templates/vitepress/monorepo/index.md +103 -34
- package/templates/vitepress/monorepo/manage.md +181 -80
- package/templates/vitepress/monorepo/publish.md +128 -57
- package/templates/vitepress/monorepo/templates.md +67 -0
- package/templates/vitepress/monorepo/troubleshooting.md +207 -0
- package/templates/vitepress/package.json +5 -5
- package/templates/vitepress/thinking.md +1 -1
- package/templates/vitepress/tools/husky.md +7 -2
- package/templates/vitepress/tools/lint-staged.md +15 -1
- package/templates/vitepress/why/examples/usage-cjs/index.js +2 -6
- package/templates/vitepress/why/examples/usage-cjs/package-lock.json +7 -13
- package/templates/vitepress/why/examples/usage-cjs/package.json +2 -2
- package/templates/vitepress/why/examples/usage-esm/index.js +2 -2
- package/templates/vitepress/why/examples/usage-esm/package-lock.json +7 -13
- package/templates/vitepress/why/examples/usage-esm/package.json +2 -2
- package/templates/vitepress/why/modern/bundlers.md +8 -46
- package/templates/vue-lib/eslint.config.js +6 -4
- package/templates/vue-lib/package.json +17 -12
- package/templates/vue-lib/test-d/index.test-d.ts +6 -0
- package/templates/vue-lib/tsconfig.test.json +1 -1
- package/templates/vue-lib/vitest.config.ts +8 -5
- package/assets/monorepo.config.ts +0 -22
- package/assets/nano-staged.js +0 -18
- package/templates/tsup/build.config.ts +0 -24
- package/templates/tsup/package.json +0 -49
- package/templates/tsup/src/index.ts +0 -12
- package/templates/tsup/test/index.test.ts +0 -18
- package/templates/tsup/tsconfig.json +0 -15
- package/templates/tsup/tsup.config.ts +0 -18
- package/templates/tsup/vitest.config.ts +0 -15
- package/templates/unbuild/build.config.ts +0 -24
- package/templates/unbuild/package.json +0 -49
- package/templates/unbuild/src/index.ts +0 -9
- package/templates/unbuild/src/utils.ts +0 -5
- package/templates/unbuild/test/index.test.ts +0 -18
- package/templates/unbuild/tsconfig.json +0 -15
- package/templates/unbuild/vitest.config.ts +0 -15
|
@@ -4,124 +4,189 @@ layout: doc
|
|
|
4
4
|
|
|
5
5
|
# icebreaker's monorepo 模板
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
这套模板的目标很直接:用一套尽量短、尽量稳定的命令,把 `pnpm + Turborepo + TypeScript + 工程化校验 + changesets` 串成一个真正能落地的 monorepo 起步架子。
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
如果你只想知道最简单怎么用,先记住下面这 5 步。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **全链路 TypeScript**:所有模板(应用、类库、CLI)均使用 TS,并自带基础测试脚手架(`vitest`)。
|
|
13
|
-
- **质量与规范**:集成 `eslint`、`stylelint`、`husky`、`commitlint`、`lint-staged`,开箱即用。
|
|
14
|
-
- **自动化发布**:`changesets` + GitHub Actions + Dockerfile 模板,实现语义化发版和部署。
|
|
15
|
-
- **命令行助手**:`@icebreakers/monorepo` CLI 提供创建、同步、升级、镜像等常用命令,可通过 `monorepo.config.ts` 自定义行为。
|
|
11
|
+
## 先这样用
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
```bash
|
|
14
|
+
pnpm install
|
|
15
|
+
pnpm setup
|
|
16
|
+
pnpm doctor
|
|
17
|
+
pnpm new
|
|
18
|
+
pnpm check
|
|
19
|
+
```
|
|
20
|
+
|
|
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. 仓库初始化与新建
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
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
|
+
```
|
|
18
66
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
4. **初始化元数据**:`pnpm script:init` 会批量更新 `package.json`、`README.md` 等公共信息。
|
|
67
|
+
- `doctor` 看“仓库能不能顺利开始使用”
|
|
68
|
+
- `check` 看“当前改动能不能顺利提交”
|
|
69
|
+
- `upgrade` 看“模板最新的标准资产要不要同步进来”
|
|
23
70
|
|
|
24
|
-
|
|
71
|
+
这三个命令不要混着理解:
|
|
25
72
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
31
|
-
| `templates/vitepress` | VitePress 文档站(即本网站源码) |
|
|
32
|
-
| `templates/tsup` | 使用 `tsup` 打包的库模板 |
|
|
33
|
-
| `templates/unbuild` | 使用 `unbuild` 打包的库模板 |
|
|
34
|
-
| `templates/vue-lib` | Vue 组件库模板 |
|
|
35
|
-
| `packages/monorepo` | CLI 及配置同步工具,支持独立升级 |
|
|
73
|
+
| 命令 | 解决的问题 |
|
|
74
|
+
| --------- | ---------------------------------------------------- |
|
|
75
|
+
| `doctor` | 当前目录是不是一个正确、完整、可用的 monorepo 根目录 |
|
|
76
|
+
| `check` | 当前提交前校验是否能过 |
|
|
77
|
+
| `upgrade` | 我要不要把最新模板里的脚本、配置、工作流同步过来 |
|
|
36
78
|
|
|
37
|
-
##
|
|
79
|
+
## 你现在拿到的基础架子
|
|
38
80
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
| `
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `
|
|
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` | 面向使用者的默认包名与入口封装 |
|
|
45
91
|
|
|
46
|
-
|
|
92
|
+
## 推荐上手路径
|
|
47
93
|
|
|
48
|
-
|
|
94
|
+
### 场景 1:你刚用模板创建了一个新仓库
|
|
49
95
|
|
|
50
96
|
```bash
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
npx monorepo ai create # 生成 Agentic 任务提示词模板(支持输出到文件,可用别名 ai new)
|
|
97
|
+
pnpm install
|
|
98
|
+
pnpm doctor
|
|
99
|
+
pnpm new
|
|
100
|
+
pnpm check
|
|
101
|
+
pnpm build
|
|
57
102
|
```
|
|
58
103
|
|
|
59
|
-
|
|
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
|
+
```
|
|
60
125
|
|
|
61
|
-
|
|
126
|
+
兼容旧文件名:
|
|
62
127
|
|
|
63
|
-
|
|
64
|
-
|
|
128
|
+
```txt
|
|
129
|
+
monorepo.config.ts
|
|
130
|
+
```
|
|
65
131
|
|
|
66
|
-
|
|
132
|
+
但两者不能同时存在。现在 CLI 会明确拒绝加载冲突配置,`repo doctor` 也会直接把这个问题标红。
|
|
67
133
|
|
|
68
|
-
|
|
134
|
+
最小示例:
|
|
69
135
|
|
|
70
136
|
```ts
|
|
71
|
-
import { defineMonorepoConfig } from '
|
|
137
|
+
import { defineMonorepoConfig } from 'repoctl'
|
|
72
138
|
|
|
73
139
|
export default defineMonorepoConfig({
|
|
74
140
|
commands: {
|
|
75
|
-
ai: {
|
|
76
|
-
baseDir: 'agentic/custom-prompts',
|
|
77
|
-
format: 'json',
|
|
78
|
-
force: true,
|
|
79
|
-
tasksFile: 'agentic/tasks.json',
|
|
80
|
-
},
|
|
81
141
|
create: {
|
|
82
|
-
defaultTemplate: '
|
|
83
|
-
renameJson: true,
|
|
84
|
-
},
|
|
85
|
-
clean: {
|
|
86
|
-
autoConfirm: true,
|
|
87
|
-
ignorePackages: ['docs'],
|
|
142
|
+
defaultTemplate: 'tsdown',
|
|
88
143
|
},
|
|
89
144
|
upgrade: {
|
|
90
145
|
skipOverwrite: true,
|
|
91
|
-
targets: ['.github', 'monorepo.config.ts'],
|
|
92
146
|
},
|
|
93
147
|
},
|
|
94
148
|
})
|
|
95
149
|
```
|
|
96
150
|
|
|
97
|
-
|
|
151
|
+
## 默认质量门禁
|
|
98
152
|
|
|
99
|
-
|
|
153
|
+
模板默认鼓励你走这条链路:
|
|
100
154
|
|
|
101
|
-
|
|
102
|
-
pnpm
|
|
103
|
-
|
|
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`:
|
|
104
162
|
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
163
|
+
- `pre-commit` 会聚焦 staged 文件
|
|
164
|
+
- 样式文件会跑 `stylelint`
|
|
165
|
+
- JS / TS / Vue 会跑 `eslint`
|
|
166
|
+
- TS / Vue 相关文件会按 workspace 跑 `typecheck`
|
|
167
|
+
- `pre-push` 会补跑整仓的 `lint`、`typecheck`,以及受影响包的 `build` / `test` / `tsd`
|
|
108
168
|
|
|
109
|
-
##
|
|
169
|
+
## 下一步看哪里
|
|
110
170
|
|
|
111
|
-
|
|
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)
|
|
112
177
|
|
|
113
|
-
|
|
114
|
-
2. 在仓库设置中开启 `Actions` 的 `Read and write permissions` 并勾选允许创建 PR。
|
|
115
|
-
3. 在 `Repository secrets` 中配置 `NPM_TOKEN`(若需要 Codecov 也可配置 `CODECOV_TOKEN`)。
|
|
116
|
-
4. 运行 `pnpm changeset`、`pnpm changeset version`、`pnpm changeset publish` 完成发布;或交由 CI 自动执行。
|
|
178
|
+
## 兼容命令说明
|
|
117
179
|
|
|
118
|
-
|
|
180
|
+
下面这些命令依然可用:
|
|
119
181
|
|
|
120
|
-
|
|
182
|
+
```bash
|
|
183
|
+
pnpm exec repoctl doctor
|
|
184
|
+
pnpm exec repoctl new
|
|
185
|
+
pnpm exec monorepo doctor
|
|
186
|
+
pnpm exec monorepo ws up
|
|
187
|
+
```
|
|
121
188
|
|
|
122
|
-
|
|
123
|
-
- [pnpm workspaces 与 Turborepo 组合的优势](./monorepo/manage.md)
|
|
124
|
-
- [工具链介绍](./tools/turborepo.md)
|
|
125
|
-
- [常见思考与 FAQ](./thinking.md)
|
|
189
|
+
只是文档不再优先推荐它们。现在主入口统一收口到:
|
|
126
190
|
|
|
127
|
-
|
|
191
|
+
- `repo`
|
|
192
|
+
- 以及生成仓库里的 `pnpm setup / pnpm new / pnpm doctor / pnpm check`
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# 命令速查
|
|
2
|
+
|
|
3
|
+
这一页只保留高频、实用、容易记错的命令。
|
|
4
|
+
|
|
5
|
+
## 最推荐的入口
|
|
6
|
+
|
|
7
|
+
在模板生成后的仓库里,优先使用根脚本:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
pnpm setup
|
|
11
|
+
pnpm doctor
|
|
12
|
+
pnpm new
|
|
13
|
+
pnpm check
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
对应关系如下:
|
|
17
|
+
|
|
18
|
+
| 根脚本 | 实际等价命令 |
|
|
19
|
+
| ------------- | ------------- |
|
|
20
|
+
| `pnpm setup` | `repo setup` |
|
|
21
|
+
| `pnpm doctor` | `repo doctor` |
|
|
22
|
+
| `pnpm new` | `repo new` |
|
|
23
|
+
| `pnpm check` | `repo check` |
|
|
24
|
+
|
|
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 --preset minimal
|
|
53
|
+
repo setup --preset standard --force
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
用途:
|
|
57
|
+
|
|
58
|
+
- 初始化当前 workspace 的推荐默认值
|
|
59
|
+
- 同步 README / package.json / changeset / tooling 相关基础资产
|
|
60
|
+
|
|
61
|
+
### `repo doctor`
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
repo doctor
|
|
65
|
+
repo doctor --strict
|
|
66
|
+
repo doctor --json
|
|
67
|
+
repo doctor --json --out reports/doctor.json
|
|
68
|
+
repo doctor --markdown --out reports/doctor.md
|
|
69
|
+
repo doctor --markdown --redact --out reports/doctor.md
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
用途:
|
|
73
|
+
|
|
74
|
+
- 诊断当前目录是不是可直接开始使用的 monorepo 根目录
|
|
75
|
+
- 检查 Node 版本、workspace 文件、CLI 依赖、根脚本、配置冲突、提交链路
|
|
76
|
+
- `--strict` 会把 warning 也视为失败,适合 CI 门禁或团队模板验收
|
|
77
|
+
- `--json` 只输出结构化报告,适合 CI、脚本和编辑器集成
|
|
78
|
+
- `--markdown` 输出适合贴到 issue / PR 的摘要报告
|
|
79
|
+
- `--redact` 会脱敏 workspace / cwd / home 绝对路径,适合发给外部协作者
|
|
80
|
+
- `--out <file>` 把文本、JSON 或 Markdown 报告写入文件,仍会按 blocking issue 返回非零状态
|
|
81
|
+
|
|
82
|
+
### `repo new`
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
repo new
|
|
86
|
+
repo new sdk --template tsdown
|
|
87
|
+
repo new docs --template vitepress
|
|
88
|
+
repo new docs --template vitepress --dry-run
|
|
89
|
+
repo new docs --template vitepress --json
|
|
90
|
+
repo new docs --template vitepress --json --out plans/docs.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
用途:
|
|
94
|
+
|
|
95
|
+
- 交互式或直接创建新的 package / app
|
|
96
|
+
- `--dry-run` 只预览模板、目标目录、package 名称和输出文件,不写入磁盘
|
|
97
|
+
- `--json` 以结构化数据输出创建预览,隐含 `--dry-run`
|
|
98
|
+
- `--out <file>` 把当前创建预览写入文件,也隐含 `--dry-run`
|
|
99
|
+
- 显式传入的 `--template` 会先校验,拼错时会失败并提示相近模板 key
|
|
100
|
+
|
|
101
|
+
### `repo templates`
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
repo templates
|
|
105
|
+
repo templates tsdown
|
|
106
|
+
repo templates --category library
|
|
107
|
+
repo templates --check
|
|
108
|
+
repo templates --check --json
|
|
109
|
+
repo templates --json
|
|
110
|
+
repo templates --markdown
|
|
111
|
+
repo templates tsdown --markdown
|
|
112
|
+
repo templates --markdown --out docs/templates.md
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
用途:
|
|
116
|
+
|
|
117
|
+
- 查看内置模板 key、分类、默认生成目录和用途
|
|
118
|
+
- 传入模板 key 时查看单个模板详情
|
|
119
|
+
- `--check` 检查内置模板元数据、目录、package.json 和临时文件
|
|
120
|
+
- 在写自动化脚本时用 `--json` 获取结构化输出
|
|
121
|
+
- 用 `--markdown` 生成可直接放进文档的模板表格或详情页
|
|
122
|
+
- 用 `--out <file>` 把当前 JSON、Markdown 或文本输出写入文件
|
|
123
|
+
|
|
124
|
+
### `repo check`
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
repo check
|
|
128
|
+
repo check --staged
|
|
129
|
+
repo check --full
|
|
130
|
+
repo check --edit-file .git/COMMIT_EDITMSG
|
|
131
|
+
repo check --dry-run
|
|
132
|
+
repo check --json --out reports/check-plan.json
|
|
133
|
+
repo check --markdown --out reports/check-plan.md
|
|
134
|
+
repo check --markdown --redact --out reports/check-plan.md
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
用途:
|
|
138
|
+
|
|
139
|
+
- 运行推荐的本地校验入口
|
|
140
|
+
- `--staged` 偏 pre-commit
|
|
141
|
+
- `--full` 偏 pre-push
|
|
142
|
+
- `--edit-file` 用于 commit message 校验
|
|
143
|
+
- `--dry-run` 只预览将要执行的校验
|
|
144
|
+
- `--json` / `--out <file>` 输出校验计划,适合 CI、脚本和编辑器集成
|
|
145
|
+
- `--markdown` 输出适合贴到 PR / issue 的校验计划摘要
|
|
146
|
+
- `--redact` 会脱敏 cwd / home 绝对路径,适合发给外部协作者
|
|
147
|
+
|
|
148
|
+
### `repo upgrade`
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
repo upgrade
|
|
152
|
+
repo upgrade --core
|
|
153
|
+
repo upgrade -i
|
|
154
|
+
repo upgrade -s
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
用途:
|
|
158
|
+
|
|
159
|
+
- 同步仓库标准资产与脚本
|
|
160
|
+
|
|
161
|
+
常见参数:
|
|
162
|
+
|
|
163
|
+
- `--core`:只同步核心配置,跳过 GitHub 相关资产
|
|
164
|
+
- `-i`:交互式选择
|
|
165
|
+
- `-s`:跳过新增,只覆盖已存在文件
|
|
166
|
+
|
|
167
|
+
### 兼容命令
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
repo sync
|
|
171
|
+
repo clean --yes
|
|
172
|
+
repo mirror
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
- `sync`:兼容入口,本质上仍是升级同步
|
|
176
|
+
- `clean`:清理选中的 workspace 包
|
|
177
|
+
- `mirror`:设置 VS Code 相关镜像环境变量
|
|
178
|
+
|
|
179
|
+
## 分组命令
|
|
180
|
+
|
|
181
|
+
### workspace / ws
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
repo workspace upgrade
|
|
185
|
+
repo ws up
|
|
186
|
+
repo workspace init
|
|
187
|
+
repo ws ls
|
|
188
|
+
repo ws ls --json --out reports/workspaces.json
|
|
189
|
+
repo ws ls --markdown --redact --out reports/workspaces.md
|
|
190
|
+
repo workspace clean --yes
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### tooling / tg
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
repo tooling init eslint vitest
|
|
197
|
+
repo tg init --all --force
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### package / pkg
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
repo package create
|
|
204
|
+
repo pkg new
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### verify / v
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
repo verify pre-commit
|
|
211
|
+
repo verify pre-push
|
|
212
|
+
repo verify commit-msg .git/COMMIT_EDITMSG
|
|
213
|
+
repo verify staged-typecheck packages/app/src/main.ts
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### env / e
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
repo env info
|
|
220
|
+
repo e i --json --out reports/env.json
|
|
221
|
+
repo e i --markdown --redact --out reports/env.md
|
|
222
|
+
repo env snapshot --json --out reports/snapshot.json
|
|
223
|
+
repo env snapshot --markdown --redact --out reports/snapshot.md
|
|
224
|
+
repo env snapshot --markdown --redact --strict --out reports/snapshot.md
|
|
225
|
+
repo env paths --json --out reports/paths.json
|
|
226
|
+
repo env paths --markdown --redact --out reports/paths.md
|
|
227
|
+
repo env support --json --out reports/support.json
|
|
228
|
+
repo env support --json --redact --out reports/support.json
|
|
229
|
+
repo env support --markdown --redact --out reports/support.md
|
|
230
|
+
repo env support --markdown --redact --strict --out reports/support.md
|
|
231
|
+
repo env mirror
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### config / cfg
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
repo config inspect
|
|
238
|
+
repo cfg i --json --out reports/config.json
|
|
239
|
+
repo cfg i --markdown --redact --out reports/config.md
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### skills / sk
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
repo skills sync --codex
|
|
246
|
+
repo sk s --claude
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### ai / ai p
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
repo ai prompt create --name checkout
|
|
253
|
+
repo ai p new
|
|
254
|
+
repo ai prompt create --tasks agentic/tasks.json -f
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## `repo`、`repoctl`、`monorepo` 的关系
|
|
258
|
+
|
|
259
|
+
三者共用同一套 CLI 实现:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
repo doctor
|
|
263
|
+
repoctl doctor
|
|
264
|
+
monorepo doctor
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
都能用,但推荐顺序是:
|
|
268
|
+
|
|
269
|
+
1. `pnpm setup / doctor / new / check`
|
|
270
|
+
2. `repo ...`
|
|
271
|
+
3. `repoctl ...` 或 `monorepo ...` 仅作为兼容入口
|
|
272
|
+
|
|
273
|
+
## 什么时候用哪个命令
|
|
274
|
+
|
|
275
|
+
| 你的问题 | 先用什么 |
|
|
276
|
+
| -------------------------- | -------------- |
|
|
277
|
+
| 仓库是不是搭对了 | `repo doctor` |
|
|
278
|
+
| 我现在这次改动能不能过校验 | `repo check` |
|
|
279
|
+
| 我要补齐模板最新脚本和配置 | `repo upgrade` |
|
|
280
|
+
| 我要新增一个子包 | `repo new` |
|
|
281
|
+
| 我要直接操作更细的模块 | 分组命令 |
|