@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.
- package/assets/package.json +6 -16
- package/package.json +1 -1
- package/templates/cli/package.json +1 -1
- package/templates/client/package.json +2 -2
- package/templates/client/worker-configuration.d.ts +8 -17
- package/templates/server/package.json +2 -2
- package/templates/server/worker-configuration.d.ts +8 -17
- package/templates/vitepress/.vitepress/config.ts +42 -5
- package/templates/vitepress/ai/index.md +33 -0
- package/templates/vitepress/ai/llms-txt.md +42 -0
- package/templates/vitepress/en/index.md +7 -7
- package/templates/vitepress/en/knowledge/monorepo.md +1 -1
- package/templates/vitepress/en/repoctl/adopt-existing.md +13 -11
- package/templates/vitepress/en/repoctl/aliases.md +3 -4
- package/templates/vitepress/en/repoctl/commands.md +12 -12
- package/templates/vitepress/en/repoctl/config.md +1 -1
- package/templates/vitepress/en/repoctl/getting-started.md +19 -19
- package/templates/vitepress/en/repoctl/index.md +10 -10
- package/templates/vitepress/en/repoctl/scenarios.md +6 -6
- package/templates/vitepress/en/repoctl/troubleshooting.md +2 -2
- package/templates/vitepress/en/repoctl/workflows.md +12 -12
- package/templates/vitepress/getting-started.md +3 -3
- package/templates/vitepress/index.md +11 -8
- package/templates/vitepress/knowledge/index.md +50 -0
- package/templates/vitepress/monorepo/commands.md +5 -5
- package/templates/vitepress/monorepo/index.md +14 -14
- package/templates/vitepress/monorepo/manage.md +21 -21
- package/templates/vitepress/monorepo/troubleshooting.md +1 -1
- package/templates/vitepress/repoctl/adopt-existing.md +22 -22
- package/templates/vitepress/repoctl/aliases.md +4 -5
- package/templates/vitepress/repoctl/checks.md +86 -0
- package/templates/vitepress/repoctl/commands.md +28 -14
- package/templates/vitepress/repoctl/config.md +10 -1
- package/templates/vitepress/repoctl/doctor.md +86 -0
- package/templates/vitepress/repoctl/execution-model.md +81 -0
- package/templates/vitepress/repoctl/getting-started.md +16 -16
- package/templates/vitepress/repoctl/index.md +40 -12
- package/templates/vitepress/repoctl/reports.md +94 -0
- package/templates/vitepress/repoctl/scenarios.md +6 -6
- package/templates/vitepress/repoctl/template-assets.md +116 -0
- package/templates/vitepress/repoctl/templates.md +3 -0
- package/templates/vitepress/repoctl/troubleshooting.md +15 -3
- package/templates/vitepress/repoctl/workflows.md +26 -13
- package/templates/vitepress/tools/index.md +38 -0
- package/templates/vitepress/tools/llms-txt.md +4 -24
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 说明 repoctl 内置模板、templateMap、模板健康检查、创建计划和模板资产维护方式。
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# repoctl 模板资产治理
|
|
6
|
+
|
|
7
|
+
repoctl 的模板能力不只是复制目录。它会把模板元数据、默认生成目录、创建计划、健康检查和配置覆盖串起来。
|
|
8
|
+
|
|
9
|
+
## 1. 内置模板映射
|
|
10
|
+
|
|
11
|
+
| key | source | 默认 target | 类型 |
|
|
12
|
+
| ------------- | --------------------- | ------------------ | --------------------- |
|
|
13
|
+
| `tsdown` | `templates/tsdown` | `packages/tsdown` | TypeScript library |
|
|
14
|
+
| `vue-lib` | `templates/vue-lib` | `packages/vue-lib` | Vue component library |
|
|
15
|
+
| `hono-server` | `templates/server` | `apps/server` | Hono service |
|
|
16
|
+
| `vue-hono` | `templates/client` | `apps/client` | Vue + Hono app |
|
|
17
|
+
| `vitepress` | `templates/vitepress` | `apps/website` | docs site |
|
|
18
|
+
| `cli` | `templates/cli` | `apps/cli` | command line tool |
|
|
19
|
+
|
|
20
|
+
查看实际可用模板:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
repo templates
|
|
24
|
+
repo templates --json
|
|
25
|
+
repo templates --markdown --out docs/templates.md
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 2. 创建计划
|
|
29
|
+
|
|
30
|
+
`repo new` 会先解析创建计划,再决定是否写入文件。计划包含:
|
|
31
|
+
|
|
32
|
+
| 字段 | 含义 |
|
|
33
|
+
| ------------------- | ------------------------------------------------ |
|
|
34
|
+
| `requestedTemplate` | 用户请求的模板 key |
|
|
35
|
+
| `template` | 实际使用的模板 key |
|
|
36
|
+
| `sourceDir` | 模板源目录 |
|
|
37
|
+
| `targetDir` | 输出目录 |
|
|
38
|
+
| `targetExists` | 目标目录是否已存在 |
|
|
39
|
+
| `packageName` | 写入 package.json 的包名 |
|
|
40
|
+
| `renameJson` | 是否把 `package.json` 输出为 `package.mock.json` |
|
|
41
|
+
|
|
42
|
+
预览创建:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
repo new docs --template vitepress --dry-run
|
|
46
|
+
repo new docs --template vitepress --json --out plans/docs.json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`--json` 和 `--out` 都隐含 `--dry-run`,不会写入文件。
|
|
50
|
+
|
|
51
|
+
## 3. 模板选择和报错
|
|
52
|
+
|
|
53
|
+
显式传入 `--template` 时,repoctl 会先校验模板 key:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
repo new sdk --template tsdown
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
如果模板 key 拼错,命令会失败并提示相近 key。它不会静默回退到默认模板,这样 CI 和脚本不会生成错误类型的项目。
|
|
60
|
+
|
|
61
|
+
## 4. 健康检查
|
|
62
|
+
|
|
63
|
+
模板资产可以通过 `repo templates --check` 检查:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
repo templates --check
|
|
67
|
+
repo templates --check --json --out reports/templates.json
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
检查内容包括:
|
|
71
|
+
|
|
72
|
+
| 检查 | 目的 |
|
|
73
|
+
| -------------- | ------------------------------------ |
|
|
74
|
+
| source 唯一性 | 避免多个模板 key 指向同一源目录 |
|
|
75
|
+
| target 唯一性 | 避免多个模板默认写到同一目标目录 |
|
|
76
|
+
| source 目录 | 确认模板目录存在 |
|
|
77
|
+
| package.json | 确认模板根目录包含包元数据 |
|
|
78
|
+
| metadata | 确认模板有 category 和 description |
|
|
79
|
+
| filtered files | 避免把临时、缓存或生成文件放入模板源 |
|
|
80
|
+
|
|
81
|
+
## 5. 自定义模板
|
|
82
|
+
|
|
83
|
+
可以在 `repoctl.config.ts` 里扩展模板映射:
|
|
84
|
+
|
|
85
|
+
```ts
|
|
86
|
+
import { defineMonorepoConfig } from 'repoctl'
|
|
87
|
+
|
|
88
|
+
export default defineMonorepoConfig({
|
|
89
|
+
commands: {
|
|
90
|
+
create: {
|
|
91
|
+
defaultTemplate: 'internal-service',
|
|
92
|
+
templateMap: {
|
|
93
|
+
'internal-service': {
|
|
94
|
+
source: 'templates/internal-service',
|
|
95
|
+
target: 'apps/internal-service',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
})
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
自定义模板建议遵守同样的治理规则:唯一 source、唯一 target、模板根目录包含 `package.json`,并避免提交构建输出和缓存文件。
|
|
104
|
+
|
|
105
|
+
## 6. 维护流程
|
|
106
|
+
|
|
107
|
+
更新模板时建议按下面流程验证:
|
|
108
|
+
|
|
109
|
+
```txt
|
|
110
|
+
修改 templates/<name>
|
|
111
|
+
-> repo templates --check
|
|
112
|
+
-> repo new demo --template <name> --json --out plans/demo.json
|
|
113
|
+
-> 构建或测试生成后的 workspace
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
如果模板文件数量发生变化,维护模板快照的测试也需要同步更新。
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
repoctl 的模板由 `@icebreakers/monorepo-templates` 维护。CLI、脚手架和文档都复用同一份模板元数据。
|
|
4
4
|
|
|
5
|
+
更偏维护者视角的模板元数据、健康检查和自定义模板说明见:[模板资产治理](./template-assets.md)。
|
|
6
|
+
|
|
5
7
|
## 内置模板
|
|
6
8
|
|
|
7
9
|
| Key | Category | 默认目录 | 适合场景 |
|
|
@@ -154,3 +156,4 @@ repo templates --check --json
|
|
|
154
156
|
- [接入已有仓库](./adopt-existing.md)
|
|
155
157
|
- [工作流与 CI](./workflows.md)
|
|
156
158
|
- [配置文件](./config.md)
|
|
159
|
+
- [模板资产治理](./template-assets.md)
|
|
@@ -16,7 +16,7 @@ repo doctor --strict
|
|
|
16
16
|
- `pnpm-workspace.yaml` 是否存在。
|
|
17
17
|
- `repoctl` 是否作为 CLI 依赖安装。
|
|
18
18
|
- 根脚本是否齐全。
|
|
19
|
-
-
|
|
19
|
+
- 是否仍残留已废弃的 `monorepo.config.ts`。
|
|
20
20
|
- Husky 与 lint-staged 是否都接上。
|
|
21
21
|
|
|
22
22
|
## 保存诊断报告
|
|
@@ -49,6 +49,16 @@ repo env paths --markdown --redact --out reports/paths.md
|
|
|
49
49
|
|
|
50
50
|
这些命令适合排查 Node、pnpm、workspace、Git、路径和 CI 环境差异。
|
|
51
51
|
|
|
52
|
+
## 先判断问题类型
|
|
53
|
+
|
|
54
|
+
| 现象 | 优先命令 | 继续阅读 |
|
|
55
|
+
| ------------------------------ | ----------------------------------------- | ------------------------------------ |
|
|
56
|
+
| 不确定当前目录是不是仓库根目录 | `repo doctor` | [doctor 诊断](./doctor.md) |
|
|
57
|
+
| 不知道 `repo check` 会跑什么 | `repo check --dry-run` | [校验链路](./checks.md) |
|
|
58
|
+
| CI 失败但日志不完整 | `repo env support --markdown --redact` | [报告与自动化输出](./reports.md) |
|
|
59
|
+
| 模板创建结果不符合预期 | `repo new <name> --template <key> --json` | [模板资产治理](./template-assets.md) |
|
|
60
|
+
| 模板列表或元数据异常 | `repo templates --check` | [模板资产治理](./template-assets.md) |
|
|
61
|
+
|
|
52
62
|
## 常见问题
|
|
53
63
|
|
|
54
64
|
### 当前目录不是仓库根目录
|
|
@@ -67,7 +77,7 @@ repo doctor
|
|
|
67
77
|
repoctl.config.ts
|
|
68
78
|
```
|
|
69
79
|
|
|
70
|
-
`monorepo.config.ts`
|
|
80
|
+
`monorepo.config.ts` 已不再加载。旧项目需要改名为 `repoctl.config.ts`。
|
|
71
81
|
|
|
72
82
|
### `repo new` 提示模板不存在
|
|
73
83
|
|
|
@@ -84,7 +94,7 @@ repo templates
|
|
|
84
94
|
使用非交互参数:
|
|
85
95
|
|
|
86
96
|
```bash
|
|
87
|
-
repo
|
|
97
|
+
repo init --yes
|
|
88
98
|
repo upgrade --no-overwrite
|
|
89
99
|
repo check --json --out reports/check-plan.json
|
|
90
100
|
```
|
|
@@ -95,4 +105,6 @@ repo check --json --out reports/check-plan.json
|
|
|
95
105
|
|
|
96
106
|
- [工作流与 CI](./workflows.md)
|
|
97
107
|
- [命令速查](./commands.md)
|
|
108
|
+
- [doctor 诊断](./doctor.md)
|
|
109
|
+
- [报告与自动化输出](./reports.md)
|
|
98
110
|
- [命令别名](./aliases.md)
|
|
@@ -6,27 +6,27 @@ repoctl 的命令可以分成两类:给人用的日常入口,以及给 CI、
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
pnpm install
|
|
9
|
-
pnpm doctor
|
|
10
|
-
pnpm new sdk --template tsdown
|
|
11
|
-
pnpm check
|
|
9
|
+
pnpm run repo:doctor
|
|
10
|
+
pnpm run repo:new -- sdk --template tsdown
|
|
11
|
+
pnpm run repo:check
|
|
12
12
|
pnpm build
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
这条链路适合新成员第一次进入仓库:
|
|
16
16
|
|
|
17
|
-
| 步骤
|
|
18
|
-
|
|
|
19
|
-
| `pnpm install`
|
|
20
|
-
| `pnpm doctor`
|
|
21
|
-
| `pnpm new`
|
|
22
|
-
| `pnpm check`
|
|
23
|
-
| `pnpm build`
|
|
17
|
+
| 步骤 | 判断标准 |
|
|
18
|
+
| ---------------------- | ------------------------------------------------ |
|
|
19
|
+
| `pnpm install` | workspace 依赖和本地链接完整 |
|
|
20
|
+
| `pnpm run repo:doctor` | 仓库根目录、Node、脚本、配置和提交链路可用 |
|
|
21
|
+
| `pnpm run repo:new` | 新包由模板创建,目录和 package metadata 符合约定 |
|
|
22
|
+
| `pnpm run repo:check` | 提交前轻量校验可以复现 |
|
|
23
|
+
| `pnpm build` | 全仓构建链路没有明显断点 |
|
|
24
24
|
|
|
25
25
|
## 存量仓库接入
|
|
26
26
|
|
|
27
27
|
```bash
|
|
28
28
|
pnpm add -D repoctl
|
|
29
|
-
pnpm exec repo
|
|
29
|
+
pnpm exec repo init --yes
|
|
30
30
|
pnpm exec repo doctor --markdown --out reports/doctor.md
|
|
31
31
|
pnpm exec repo upgrade --no-overwrite
|
|
32
32
|
pnpm exec repo doctor
|
|
@@ -87,11 +87,23 @@ repo ws ls --json --out reports/workspaces.json
|
|
|
87
87
|
|
|
88
88
|
这些命令都不会要求人工选择,适合编辑器插件、脚本和 CI bot。
|
|
89
89
|
|
|
90
|
+
## 推荐流水线拆分
|
|
91
|
+
|
|
92
|
+
| 阶段 | 命令 | 失败后先看 |
|
|
93
|
+
| ---- | --------------------------------------------------------------- | ------------------------------------ |
|
|
94
|
+
| 安装 | `pnpm install --frozen-lockfile` | lockfile、Node、pnpm 版本 |
|
|
95
|
+
| 诊断 | `repo doctor --strict` | [doctor 诊断](./doctor.md) |
|
|
96
|
+
| 计划 | `repo check --full --json --out reports/check-plan.json` | [报告与自动化输出](./reports.md) |
|
|
97
|
+
| 执行 | `repo check --full` | 失败的 root script 或 workspace 任务 |
|
|
98
|
+
| 留证 | `repo env support --markdown --redact --out reports/support.md` | CI artifact |
|
|
99
|
+
|
|
100
|
+
早期项目可以把计划和执行合并。成熟项目建议保留 `reports/`,方便失败时复盘实际执行路径。
|
|
101
|
+
|
|
90
102
|
## 非交互参数选择
|
|
91
103
|
|
|
92
104
|
| 场景 | 推荐参数 |
|
|
93
105
|
| ------------------ | -------------------------------------------------- |
|
|
94
|
-
| 初始化时接受默认值 | `repo
|
|
106
|
+
| 初始化时接受默认值 | `repo init --yes` |
|
|
95
107
|
| 同步时保留已有改动 | `repo upgrade --no-overwrite` |
|
|
96
108
|
| 明确覆盖标准资产 | `repo upgrade --yes` 或 `repo upgrade --overwrite` |
|
|
97
109
|
| 只看计划不执行 | `--dry-run` |
|
|
@@ -101,5 +113,6 @@ repo ws ls --json --out reports/workspaces.json
|
|
|
101
113
|
## 下一步
|
|
102
114
|
|
|
103
115
|
- 查所有参数:[命令速查](./commands.md)
|
|
104
|
-
-
|
|
116
|
+
- 理解校验链路:[校验链路](./checks.md)
|
|
117
|
+
- 生成排障包:[报告与自动化输出](./reports.md)
|
|
105
118
|
- 看短命令:[命令别名](./aliases.md)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: repoctl 文档站的工具专题入口,汇总 pnpm、Turborepo、changeset、Husky、lint-staged 和 Renovate。
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 工具专题
|
|
6
|
+
|
|
7
|
+
工具专题只讲 repoctl 周边工具。repoctl 会把这些工具串成稳定工作流,但每个工具本身仍有独立的配置模型和维护边界。
|
|
8
|
+
|
|
9
|
+
## 1. 工具地图
|
|
10
|
+
|
|
11
|
+
| 工具 | 在 repoctl 工作流里的位置 | 详细页面 |
|
|
12
|
+
| ----------- | ----------------------------------------------- | ------------------------------- |
|
|
13
|
+
| pnpm | workspace、依赖安装、根脚本和包内脚本执行 | [pnpm](./pnpm.md) |
|
|
14
|
+
| Turborepo | build、lint、typecheck、test 等任务编排 | [turborepo](./turborepo.md) |
|
|
15
|
+
| changeset | 多包版本、变更记录和发布准备 | [changeset](./changeset.md) |
|
|
16
|
+
| Husky | Git hook 入口 | [husky](./husky.md) |
|
|
17
|
+
| lint-staged | staged 文件级 lint、stylelint 和 typecheck 路由 | [lint-staged](./lint-staged.md) |
|
|
18
|
+
| Renovate | 依赖更新和升级 PR 治理 | [renovate](./renovate.md) |
|
|
19
|
+
|
|
20
|
+
## 2. 和 repoctl 的关系
|
|
21
|
+
|
|
22
|
+
repoctl 不隐藏这些工具。它主要做三件事:
|
|
23
|
+
|
|
24
|
+
1. 生成推荐配置,减少每个仓库重复复制。
|
|
25
|
+
2. 提供 `doctor` 和 `check`,帮助你验证配置是否接上。
|
|
26
|
+
3. 提供 `upgrade`,在模板标准发生变化时同步资产。
|
|
27
|
+
|
|
28
|
+
因此排障时不要只看 repoctl 命令。比如 `repo check --full` 失败时,真正失败的任务可能是 `pnpm lint`、`pnpm typecheck`、某个 workspace 的 `build` 或 `test`。
|
|
29
|
+
|
|
30
|
+
## 3. 按目标阅读
|
|
31
|
+
|
|
32
|
+
| 目标 | 建议页面 |
|
|
33
|
+
| ------------------------- | ------------------------------------------------------ |
|
|
34
|
+
| 让 workspace 包能互相引用 | [pnpm](./pnpm.md) |
|
|
35
|
+
| 提升整仓任务速度 | [turborepo](./turborepo.md) |
|
|
36
|
+
| 建立规范发版链路 | [changeset](./changeset.md) |
|
|
37
|
+
| 提交前自动修复格式和 lint | [Husky](./husky.md) 与 [lint-staged](./lint-staged.md) |
|
|
38
|
+
| 降低依赖升级成本 | [Renovate](./renovate.md) |
|
|
@@ -1,29 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: llms.txt 说明页已移动到独立的 AI 文档栏目。
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# llms.txt 已移动
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
llms.txt 现在放在独立的 AI 文档栏目中维护。
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
- `/llms.txt`:文档索引,列出可供模型读取的页面。
|
|
12
|
-
- `/llms-full.txt`:把站点文档合并成单个文本文件。
|
|
13
|
-
- 每个页面对应的 `.md` 文件:保留页面内容的 Markdown 版本。
|
|
14
|
-
|
|
15
|
-
## 使用方式
|
|
16
|
-
|
|
17
|
-
访问 `https://repo.icebreaker.top/llms.txt` 可以获取当前文档的 LLM 索引。如果需要一次性提供完整上下文,可以使用 `https://repo.icebreaker.top/llms-full.txt`。
|
|
18
|
-
|
|
19
|
-
当你在 Cursor、Claude Code、Codex 或其他 AI 编程工具里引用 repoctl 文档时,优先提供 `llms.txt`,再按需要补充具体页面链接。
|
|
20
|
-
|
|
21
|
-
## 维护约定
|
|
22
|
-
|
|
23
|
-
新增重要文档页面时,在 frontmatter 中补充 `description`。构建插件会把描述写入 `llms.txt` 的链接说明中,让模型更容易判断每个页面的用途。
|
|
24
|
-
|
|
25
|
-
```md
|
|
26
|
-
---
|
|
27
|
-
description: 说明这个页面解决的问题和适用场景。
|
|
28
|
-
---
|
|
29
|
-
```
|
|
9
|
+
请阅读:[AI 文档入口:llms.txt](../ai/llms-txt.md)。
|