| name | release |
| description | Use when publishing a new version of bit-framework to npm. Handles version bump, build, git commit, npm publish, and git tag in sequence. |
Release
执行 bit-framework 完整发版流程:升级版本号 → 生成 CHANGELOG → 构建 → 提交 → 发布 npm → 打 tag。
用法
/release [patch|minor|major]
patch(默认)— bug 修复,0.0.x → 0.0.x+1
minor — 新功能,0.x.0 → 0.x+1.0
major — 破坏性变更,x.0.0 → x+1.0.0
执行步骤
收到 /release 命令后,按以下步骤执行:
第一步:确认版本类型
如果用户没有指定类型,询问:
发版类型是 patch(bug修复)、minor(新功能)还是 major(破坏性变更)?
第二步:检查当前状态
git status
git log --oneline -5
确认工作区干净(无未提交的修改)。如果有未提交内容,提示用户先提交。
第三步:从 package.json 获取当前版本
读取根目录 package.json 的 version 字段,告知用户当前版本和即将升级到的版本,请求确认。
第四步:升级所有模块版本号
使用 pnpm workspace 命令升级所有子模块版本号:
pnpm version:{type}
例如 pnpm version:patch。该命令会升级所有子模块(排除 bit-creator)的版本号。
然后必须同步升级根 package.json 的版本号,使其与子模块版本一致。直接编辑根 package.json 中的 "version" 字段为新版本号。
第五步:生成 CHANGELOG
调用 changelog 技能生成本次发版的 CHANGELOG 条目。
注意:changelog 技能会从 package.json 读取版本号,此时版本号已在第四步更新,所以 CHANGELOG 条目会使用新版本号。
第六步:构建所有模块
pnpm build:all
如果构建失败,停止流程并报告错误。
第七步:提交代码
版本号和 CHANGELOG 都已修改完成,现在统一提交:
git add .
git commit -m "chore: release v{NEW_VERSION}"
git push
{NEW_VERSION} 替换为实际的新版本号。
第八步:发布到 npm
禁止使用 npm publish! 必须通过 pnpm publish:xxx 脚本发布。
原因:pnpm publish 会自动将 workspace:* 替换为实际版本号,而 npm publish 会将 workspace:* 原样写入,导致安装方无法解析依赖。
任何情况下(包括需要传递 OTP 等参数时)都不得绕过 pnpm 直接调用 npm publish。
确认已登录 npm:
npm whoami
按依赖顺序发布:
pnpm publish:core
pnpm publish:event
pnpm publish:net
pnpm publish:ecs
pnpm publish:assets
pnpm publish:quadtree
pnpm publish:behaviortree
pnpm publish:ui
pnpm publish:condition
pnpm publish:ec
pnpm publish:minigame
pnpm publish:hotupdate
OTP 处理
如果发布时遇到 OTP(2FA 验证码)错误:
- 优先方案:建议用户在 npmjs.com 创建 Automation token 配置到
~/.npmrc,彻底绕过 OTP
- 备选方案:让用户在终端手动执行
pnpm publish:all,由 npm 交互式完成 OTP 验证
- 绝对禁止:不得为了传递
--otp 参数而改用 npm publish
第九步:打 git tag
git tag v{NEW_VERSION}
git push --tags
{NEW_VERSION} 替换为实际的新版本号。
完成
汇报发版结果:版本号、发布的模块列表、tag。