@icebreakers/monorepo-templates 1.2.1 → 1.3.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.
Files changed (63) hide show
  1. package/assets/.github/workflows/ci.yml +4 -4
  2. package/assets/.github/workflows/release.yml +8 -7
  3. package/assets/package.json +2 -1
  4. package/assets/renovate.json +0 -1
  5. package/assets-data.mjs +0 -1
  6. package/dist/cli.mjs +1 -1
  7. package/dist/index.mjs +1 -1
  8. package/dist/{prepare--cxFop8c.mjs → prepare-D7eJqEqy.mjs} +1 -2
  9. package/package.json +2 -2
  10. package/templates/cli/package.json +1 -1
  11. package/templates/client/package.json +1 -1
  12. package/templates/server/package.json +1 -1
  13. package/templates/tsdown/package.json +1 -1
  14. package/templates/vitepress/.vitepress/config.ts +9 -119
  15. package/templates/vitepress/.vitepress/env.d.ts +1 -0
  16. package/templates/vitepress/.vitepress/home/content.ts +186 -0
  17. package/templates/vitepress/.vitepress/home/types.ts +65 -0
  18. package/templates/vitepress/.vitepress/navigation/routes.ts +138 -0
  19. package/templates/vitepress/.vitepress/seo.ts +40 -0
  20. package/templates/vitepress/.vitepress/theme/components/HomePage.vue +134 -0
  21. package/templates/vitepress/.vitepress/theme/home/foundation.css +180 -0
  22. package/templates/vitepress/.vitepress/theme/home/index.css +3 -0
  23. package/templates/vitepress/.vitepress/theme/home/responsive.css +49 -0
  24. package/templates/vitepress/.vitepress/theme/home/sections.css +153 -0
  25. package/templates/vitepress/.vitepress/theme/index.ts +9 -1
  26. package/templates/vitepress/ai/llms-txt.md +2 -2
  27. package/templates/vitepress/index.md +6 -60
  28. package/templates/vitepress/package.json +11 -4
  29. package/templates/vitepress/public/repoctl-doctor.png +0 -0
  30. package/templates/vitepress/repoctl/workflows.md +35 -0
  31. package/templates/vitepress/scripts/check-locales.ts +162 -0
  32. package/templates/vitepress/thinking.md +15 -0
  33. package/templates/vitepress/tools/changeset.md +17 -12
  34. package/templates/vitepress/tools/husky.md +41 -3
  35. package/templates/vitepress/tools/lint-staged.md +32 -5
  36. package/templates/vitepress/tools/pnpm.md +39 -7
  37. package/templates/vitepress/tools/renovate.md +27 -3
  38. package/templates/vitepress/tools/turborepo.md +33 -7
  39. package/templates/vitepress/tsconfig.json +7 -0
  40. package/templates/vitepress/why/examples/2.npm-basic-package/README.md +1 -1
  41. package/templates/vitepress/why/examples/3.npm-basic-package/README.md +1 -1
  42. package/templates/vitepress/why/how-to-reuse-js-code.md +36 -6
  43. package/templates/vitepress/why/js-cjs-mjs.md +31 -9
  44. package/templates/vitepress/why/js-keywords.md +33 -4
  45. package/templates/vitepress/why/modern/bundlers.md +37 -2
  46. package/templates/vitepress/why/modern/dts.md +44 -3
  47. package/templates/vitepress/why/modern/esm-vs-cjs.md +38 -3
  48. package/templates/vitepress/why/modern/index.md +33 -9
  49. package/templates/vitepress/why/modern/package-entry-points.md +33 -4
  50. package/templates/vitepress/why/modern/typescript.md +40 -4
  51. package/templates/vitepress/why/publish-basic-npm-package.md +37 -13
  52. package/templates/vitepress/why/what-is-npm-package.md +32 -3
  53. package/templates/vitepress/wrangler.jsonc +20 -3
  54. package/templates/vitepress/zh/ai/index.md +1 -1
  55. package/templates/vitepress/zh/ai/llms-txt.md +1 -1
  56. package/templates/vitepress/zh/index.md +6 -63
  57. package/templates/vitepress/zh/repoctl/workflows.md +35 -0
  58. package/templates/vitepress/zh/thinking.md +9 -6
  59. package/templates/vitepress/zh/why/examples/2.npm-basic-package/README.md +1 -1
  60. package/templates/vitepress/zh/why/examples/3.npm-basic-package/README.md +1 -1
  61. package/templates/vitepress/zh/why/index.md +38 -1
  62. package/templates/vue-lib/package.json +1 -1
  63. package/assets/netlify.toml +0 -14
@@ -110,6 +110,41 @@ repo ws ls --json --out reports/workspaces.json
110
110
  | 输出给脚本 | `--json --out <file>` |
111
111
  | 输出给人看并脱敏 | `--markdown --redact --out <file>` |
112
112
 
113
+ ## 文档 Worker
114
+
115
+ repoctl 文档通过名为 `repoctl-docs` 的 Cloudflare Worker 部署。VitePress 只生成静态资产,Workers Static Assets 直接提供这些文件,因此不需要应用 handler,也不声明 `ASSETS` binding。
116
+
117
+ ### Workers Builds 配置
118
+
119
+ | 配置项 | 值 |
120
+ | ---------- | ------------------------------------------------------- |
121
+ | 仓库根目录 | 仓库根目录 |
122
+ | 生产分支 | `main` |
123
+ | 构建命令 | `pnpm --filter @icebreakers/website build` |
124
+ | 生产部署 | `pnpm --filter @icebreakers/website run deploy` |
125
+ | 非生产部署 | `pnpm --filter @icebreakers/website run deploy:preview` |
126
+
127
+ 构建命令会先校验双语页面,再由 VitePress 生成 `.vitepress/dist`。Worker 配置会为不存在的路由返回生成后的 `404.html`,并继续读取 `public/_redirects`,兼容旧的 `/en/*` 链接。
128
+
129
+ ### 预览、发布与回滚
130
+
131
+ 修改生产部署前,先完成本地验证:
132
+
133
+ ```bash
134
+ pnpm --filter @icebreakers/website build
135
+ pnpm --filter @icebreakers/website run deploy:dry-run
136
+ pnpm --filter @icebreakers/website exec wrangler dev
137
+ ```
138
+
139
+ 非生产 Workers Builds 上传预览版本。验证通过后再执行生产部署。需要回滚时,先查看版本历史,再选择最近的稳定版本:
140
+
141
+ ```bash
142
+ pnpm --filter @icebreakers/website exec wrangler versions list
143
+ pnpm --filter @icebreakers/website exec wrangler rollback <VERSION_ID>
144
+ ```
145
+
146
+ `repoctl.icebreaker.top` 是唯一 canonical custom domain。Cloudflare Redirect Rules 把 `repo.icebreaker.top/*` 和 `monorepo.icebreaker.top/*` 永久跳转到主域名,同时保留路径和查询参数。
147
+
113
148
  ## 下一步
114
149
 
115
150
  - 查所有参数:[命令速查](./commands.md)
@@ -69,17 +69,20 @@
69
69
 
70
70
  此外,模板里还有许多为 `GitHub` 显示优化的 `md` 文档。
71
71
 
72
- ## 部署
72
+ ## 文档部署
73
73
 
74
- 文档网站通过 `netlify.toml` 配置部署在 `Netlify` 上。最初我使用的是 `Vercel`,但由于**国内**访问速度的原因,最终迁移到了 `Netlify`。
74
+ 文档是一个 VitePress 静态站点,以名为 `repoctl-docs` 的 Cloudflare Worker 发布。Workers Static Assets 直接托管 `.vitepress/dist`,同时处理自定义 404 页面和 `_redirects` 兼容规则。站点没有动态请求逻辑,因此不额外编写 Worker handler,也不声明 `ASSETS` binding。
75
75
 
76
- 而且由于我是开源项目贡献者的原因,`Netlify` 为我 `免费` 提供了 `Pro` 版本的计划 (通常这需要 `$19/per member/month`)
76
+ Cloudflare Workers Builds 从仓库根目录执行:
77
77
 
78
- 感谢 `Netlify`! 爱你❤️😍。
78
+ ```bash
79
+ pnpm --filter @icebreakers/website build
80
+ pnpm --filter @icebreakers/website run deploy
81
+ ```
79
82
 
80
- 如果看到这里的哥们,你也有一定影响力的开源项目,也可以通过下方的链接申请。
83
+ 非生产分支使用 `pnpm --filter @icebreakers/website run deploy:preview` 上传预览版本。生产发布前运行 `pnpm --filter @icebreakers/website run deploy:dry-run`,校验静态资产清单和 Wrangler 配置。需要回滚时,先用 `wrangler versions list` 确认版本,再执行 `wrangler rollback <VERSION_ID>`。
81
84
 
82
- https://www.netlify.com/legal/open-source-policy/
85
+ 唯一主域名是 `https://repoctl.icebreaker.top`。`repo.icebreaker.top` 和 `monorepo.icebreaker.top` 只作为兼容入口,由 Cloudflare 301 跳转到主域名,并保留原路径与查询参数。
83
86
 
84
87
  ## 总结
85
88
 
@@ -1 +1 @@
1
- https://repo.icebreaker.top/
1
+ https://repoctl.icebreaker.top/
@@ -1 +1 @@
1
- https://repo.icebreaker.top/
1
+ https://repoctl.icebreaker.top/
@@ -1 +1,38 @@
1
- # 从 0 到 1 构建 monorepo
1
+ # 包的演进
2
+
3
+ 一个可发布的 npm 包不只是源代码目录。消费者依赖它的运行时格式、类型声明、入口点、发布文件和兼容性承诺。这里按这些公开边界整理现代包的基础知识。
4
+
5
+ ## 先从消费者开始
6
+
7
+ 在选择打包器或模块格式前,先回答:
8
+
9
+ - 消费者使用 ESM、CommonJS,还是两者都需要?
10
+ - 包发布运行时代码、类型、CLI、配置预设还是资源?
11
+ - 需要支持哪些 Node 版本?
12
+ - 对外只暴露一个入口,还是需要明确的子路径?
13
+
14
+ 这些答案定义了包的边界。工具链应该实现边界,而不是替代边界决策。
15
+
16
+ ## 推荐目录
17
+
18
+ ```text
19
+ src/ 源代码
20
+ dist/ 生成的 ESM、CommonJS 与声明文件
21
+ package.json 公开 metadata 与 exports 映射
22
+ README.md 安装和使用契约
23
+ ```
24
+
25
+ 使用 `files` 控制发布内容,并在发布前执行 `npm pack --dry-run` 检查实际 tarball。
26
+
27
+ ## 专题
28
+
29
+ - [ESM 与 CommonJS](./modern/esm-vs-cjs.md)
30
+ - [类型声明](./modern/dts.md)
31
+ - [包入口](./modern/package-entry-points.md)
32
+ - [构建工具](./modern/bundlers.md)
33
+ - [TypeScript](./modern/typescript.md)
34
+
35
+ ## 继续阅读
36
+
37
+ - [什么是 npm 包](./what-is-npm-package.md)
38
+ - [发布 npm 包](./publish-basic-npm-package.md)
@@ -6,7 +6,7 @@
6
6
  "description": "Internal Vue library template shipped with repoctl",
7
7
  "author": "ice breaker <hi@sonofmagic.top>",
8
8
  "license": "ISC",
9
- "homepage": "https://repo.icebreaker.top",
9
+ "homepage": "https://repoctl.icebreaker.top",
10
10
  "repository": {
11
11
  "type": "git",
12
12
  "url": "git+https://github.com/sonofmagic/repoctl.git",
@@ -1,14 +0,0 @@
1
- [build]
2
- publish = "dist"
3
- command = "pnpm run build"
4
-
5
- [build.environment]
6
- NODE_VERSION = "22"
7
-
8
- [[redirects]]
9
- from = "/*"
10
- to = "/index.html"
11
- status = 200
12
-
13
- [context.deploy-preview]
14
- ignore = "exit 0"