@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,105 @@
1
+ # 工作流与 CI
2
+
3
+ repoctl 的命令可以分成两类:给人用的日常入口,以及给 CI、脚本、编辑器用的可保存输出。
4
+
5
+ ## 本地日常工作流
6
+
7
+ ```bash
8
+ pnpm install
9
+ pnpm doctor
10
+ pnpm new sdk --template tsdown
11
+ pnpm check
12
+ pnpm build
13
+ ```
14
+
15
+ 这条链路适合新成员第一次进入仓库:
16
+
17
+ | 步骤 | 判断标准 |
18
+ | -------------- | ------------------------------------------------ |
19
+ | `pnpm install` | workspace 依赖和本地链接完整 |
20
+ | `pnpm doctor` | 仓库根目录、Node、脚本、配置和提交链路可用 |
21
+ | `pnpm new` | 新包由模板创建,目录和 package metadata 符合约定 |
22
+ | `pnpm check` | 提交前轻量校验可以复现 |
23
+ | `pnpm build` | 全仓构建链路没有明显断点 |
24
+
25
+ ## 存量仓库接入
26
+
27
+ ```bash
28
+ pnpm add -D repoctl
29
+ pnpm exec repo setup --yes
30
+ pnpm exec repo doctor --markdown --out reports/doctor.md
31
+ pnpm exec repo upgrade --no-overwrite
32
+ pnpm exec repo doctor
33
+ ```
34
+
35
+ 推荐先用 `--no-overwrite` 保守接入。确认标准资产差异后,再决定是否使用 `--yes` 或 `--overwrite`。
36
+
37
+ ## CI 快速门禁
38
+
39
+ ```bash
40
+ pnpm install --frozen-lockfile
41
+ pnpm exec repo doctor --strict
42
+ pnpm exec repo check --full
43
+ ```
44
+
45
+ 适合小仓库或早期项目。`doctor --strict` 会把 warning 也当成失败,能避免配置漂移慢慢积累。
46
+
47
+ ## CI 报告模式
48
+
49
+ ```bash
50
+ pnpm exec repo doctor --json --out reports/doctor.json
51
+ pnpm exec repo check --json --out reports/check-plan.json
52
+ pnpm exec repo env support --markdown --redact --out reports/support.md
53
+ ```
54
+
55
+ 这组命令适合想保存构建上下文的 CI:
56
+
57
+ - `doctor.json` 给脚本判断仓库健康状态。
58
+ - `check-plan.json` 记录本次会跑哪些校验。
59
+ - `support.md` 适合上传为 artifact,或贴进 issue / PR。
60
+
61
+ ## pre-commit 与 pre-push
62
+
63
+ repoctl 暴露了底层 verify 命令,方便 hook 和脚本复用:
64
+
65
+ ```bash
66
+ repo verify pre-commit
67
+ repo verify staged-typecheck packages/app/src/main.ts
68
+ repo verify commit-msg .git/COMMIT_EDITMSG
69
+ repo verify pre-push
70
+ ```
71
+
72
+ 默认建议:
73
+
74
+ | 阶段 | 推荐行为 |
75
+ | ---------- | ------------------------------------------------------- |
76
+ | pre-commit | 聚焦 staged 文件,运行格式、lint 和 workspace typecheck |
77
+ | commit-msg | 校验 Conventional Commit 格式 |
78
+ | pre-push | 跑整仓 lint/typecheck,并按变更范围补 build/test/tsd |
79
+
80
+ ## 自动化创建预览
81
+
82
+ ```bash
83
+ repo new dashboard --template vue-hono --json --out plans/dashboard.json
84
+ repo templates --markdown --out docs/templates.md
85
+ repo ws ls --json --out reports/workspaces.json
86
+ ```
87
+
88
+ 这些命令都不会要求人工选择,适合编辑器插件、脚本和 CI bot。
89
+
90
+ ## 非交互参数选择
91
+
92
+ | 场景 | 推荐参数 |
93
+ | ------------------ | -------------------------------------------------- |
94
+ | 初始化时接受默认值 | `repo setup --yes` |
95
+ | 同步时保留已有改动 | `repo upgrade --no-overwrite` |
96
+ | 明确覆盖标准资产 | `repo upgrade --yes` 或 `repo upgrade --overwrite` |
97
+ | 只看计划不执行 | `--dry-run` |
98
+ | 输出给脚本 | `--json --out <file>` |
99
+ | 输出给人看并脱敏 | `--markdown --redact --out <file>` |
100
+
101
+ ## 下一步
102
+
103
+ - 查所有参数:[命令速查](./commands.md)
104
+ - 生成排障包:[排障与报告](./troubleshooting.md)
105
+ - 看短命令:[命令别名](./aliases.md)
@@ -2,6 +2,17 @@
2
2
 
3
3
  [Changesets](https://github.com/changesets/changesets)。它帮助你在 **monorepo** 或多包项目中更有条理地维护变更日志(changelog)、版本号升级策略以及自动化发布流程。
4
4
 
5
+ 在 repoctl 体系里,Changesets 负责“版本和发布”,repoctl 负责“发布前仓库是否健康”。
6
+
7
+ ```bash
8
+ pnpm exec repo doctor --strict
9
+ pnpm exec repo check --full
10
+ pnpm changeset
11
+ pnpm exec repo release stable
12
+ ```
13
+
14
+ 继续看:[monorepo 发包与变更日志](../monorepo/publish.md)。
15
+
5
16
  ## 1. 什么是 Changeset?
6
17
 
7
18
  - **核心思想**:每一次改动,不直接修改 `package.json` 里的版本号,而是通过写一个 `changeset` 文件(通常放在 `.changeset` 文件夹下)。
@@ -1,5 +1,22 @@
1
1
  # Husky
2
2
 
3
+ 在 repoctl 体系里,Husky 是 Git hook 触发器;真正的校验逻辑尽量收口到 repoctl 命令,方便本地、CI 和手动复现使用同一套入口。
4
+
5
+ ```bash
6
+ repo verify pre-commit
7
+ repo verify commit-msg .git/COMMIT_EDITMSG
8
+ repo verify pre-push
9
+ ```
10
+
11
+ 如果你只想手动复现推荐校验,用:
12
+
13
+ ```bash
14
+ repo check --staged
15
+ repo check --full
16
+ ```
17
+
18
+ 继续看:[repoctl 工作流与 CI](../repoctl/workflows.md)。
19
+
3
20
  ## 1. 什么是 Husky?
4
21
 
5
22
  **Husky** 是一个用于在 **Git hooks**(如 `pre-commit`、`pre-push`、`commit-msg` 等)中运行脚本的工具。
@@ -1,5 +1,15 @@
1
1
  # lint-staged
2
2
 
3
+ 在 repoctl 体系里,lint-staged 负责把 staged 文件交给合适的工具;repoctl 的 `verify staged-typecheck` 会根据文件所在 workspace 路由 typecheck。
4
+
5
+ ```bash
6
+ repo verify pre-commit
7
+ repo verify staged-typecheck packages/app/src/main.ts
8
+ repo check --staged
9
+ ```
10
+
11
+ 继续看:[repoctl 工作流与 CI](../repoctl/workflows.md)。
12
+
3
13
  ## 1. 什么是 lint-staged?
4
14
 
5
15
  **lint-staged** 是一个工具,主要功能是:
@@ -1,5 +1,31 @@
1
1
  # pnpm
2
2
 
3
+ repoctl 默认围绕 pnpm workspace 设计。你不需要先掌握 pnpm 的所有细节,但要理解这三个事实:
4
+
5
+ - `pnpm-workspace.yaml` 决定哪些目录属于 workspace。
6
+ - `pnpm install` 会把 workspace 包链接起来。
7
+ - 根脚本,例如 `pnpm doctor`、`pnpm new`、`pnpm check`,最终会调用 repoctl 的 `repo` CLI。
8
+
9
+ ## 在 repoctl 项目里怎么用 pnpm
10
+
11
+ ```bash
12
+ pnpm install
13
+ pnpm add -D repoctl
14
+ pnpm doctor
15
+ pnpm new sdk --template tsdown
16
+ pnpm check
17
+ ```
18
+
19
+ | 命令 | 在 repoctl 工作流里的作用 |
20
+ | --------------------- | ----------------------------- |
21
+ | `pnpm install` | 安装依赖并创建 workspace link |
22
+ | `pnpm add -D repoctl` | 给已有仓库接入 repoctl CLI |
23
+ | `pnpm doctor` | 通过根脚本运行 `repo doctor` |
24
+ | `pnpm new` | 通过根脚本运行 `repo new` |
25
+ | `pnpm check` | 通过根脚本运行 `repo check` |
26
+
27
+ 继续看:[repoctl 快速开始](../repoctl/getting-started.md)。
28
+
3
29
  ## 1. 什么是 pnpm?
4
30
 
5
31
  **pnpm** 是一种 Node.js 的包管理器(类似于 **npm** 和 **yarn**)。
@@ -1,5 +1,22 @@
1
1
  # Turborepo
2
2
 
3
+ 在 repoctl 体系里,Turborepo 负责“任务编排和缓存”,repoctl 负责“什么时候该跑哪些任务”。你日常通常不需要直接调用 `turbo`,而是通过根脚本或 `repo check` 间接触发。
4
+
5
+ ```bash
6
+ pnpm build
7
+ pnpm test
8
+ pnpm exec repo check --full
9
+ pnpm exec repo check --json --out reports/check-plan.json
10
+ ```
11
+
12
+ | 层级 | 作用 |
13
+ | --------------------------------- | ----------------------------------------- |
14
+ | `repo check` | 决定校验模式,输出可读或可保存的计划 |
15
+ | 根脚本 `pnpm build` / `pnpm test` | 调用 `turbo run build` / `turbo run test` |
16
+ | `turbo.json` | 定义任务依赖、缓存输出和执行策略 |
17
+
18
+ 继续看:[repoctl 工作流与 CI](../repoctl/workflows.md)。
19
+
3
20
  ## 1. 什么是 Turborepo?
4
21
 
5
22
  **Turborepo** 是由 **Vercel** 推出的一个 **高性能 JavaScript/TypeScript monorepo 构建系统**。