用途
该技能用于把全部 @hypercli 包以指定版本发布到 npm。整个流程覆盖版本号提升、构建、测试、打标签和发布,并包含发布前的校验与发布后的收尾。
前置条件
- 必须位于 main 分支,且工作区干净。
- 必须已通过 npm 认证(npm whoami 应成功)。
- 所有包间依赖应使用 workspace:*(版本提升脚本会转换它们)。
主要步骤
- 校验:确认当前分支为 main、工作区干净、npm 认证有效。任一检查失败则停止并告知用户。
- 提升版本:运行 node scripts/bump-versions.mjs <version>,更新全部 7 个 package.json 文件,将 workspace:* 引用改写为 ^<version>,并重新生成 oclif 清单。
- 更新 release-please 清单:编辑 .release-please-manifest.json,将所有条目设为 <version>。
- 构建全部包:运行 bunx moon run :build,所有包必须构建成功,否则停止。
- 运行测试:cd packages/hq && bun run test,所有测试必须通过,否则停止。
- 提交版本提升:git add -A 后执行 git commit -m "chore: bump all packages to <version>"。
- 干跑发布:bash scripts/release.sh --dry-run,全部 7 个包必须成功,检查输出中的警告,失败则停止并排查。
- 与用户确认:向用户展示将要发布的版本、包数量以及干跑中的警告,获得明确确认后再继续。
- 打标签并推送:git tag v<version>,然后 git push && git push origin v<version>。
- 发布到 npm:bash scripts/release.sh。
- 验证:npm view @hypercli/cli@<version> version,若返回版本号则发布完成。
- 恢复 workspace 依赖:发布后,将每个包间依赖的 ^<version> 改回 workspace:,以保持本地开发使用 bun workspace 链接,并提交为 chore: restore workspace: deps after v<version> release。
发布顺序
发布顺序由依赖图决定:@hypercli/ui(无依赖)、@hypercli/core(依赖 ui)、create-hyper-hq(无依赖)、@hypercli/kit(依赖 core、ui)、@hypercli/hq(依赖 create-hyper-hq、ui)、@hypercli/gen(依赖 core、kit、ui)、@hypercli/cli(依赖 core、ui、gen、hq、kit)。release.sh 脚本会自动处理该顺序。
适用场景
适用于需要将 @hypercli 系列包统一发布到 npm 的维护场景,尤其是多包 monorepo 中需要按依赖顺序发布并保持本地开发链接的情况。
限制
资料未提供该技能对非 main 分支、非干净工作区或未认证 npm 情况下的替代处理方式;也未提供失败重试、回滚或版本冲突处理的具体说明。