版本号升级技能
触发条件
- "升级版本"、"版本号"、"发布版本"、"更新版本"、"bump"、"release"
参数说明
- 无参数或
patch: patch +1 minor: minor +1, patch 归零major: major +1, minor/patch 归零- 具体版本号 (如
1.2.0): 直接使用
发布选项
⚠️ 默认创建 tag 并推送。除非用户明确说"不要 tag"或"--no-tag"。
--no-tag: 不创建 git tag--no-push: 不推送到远程--no-publish: 不发布到 npm
项目版本文件
- 位置:
package.json中的version字段 - 格式:
{major}.{minor}.{patch}(无v前缀) - 当前: 通过
node -p "require('./package.json').version"读取
执行步骤
1. 读取当前版本号
node -p "require('./package.json').version"
2. 计算新版本号
| 当前版本 | 升级类型 | 新版本 |
|---|---|---|
| 0.1.2 | patch (默认) | 0.1.3 |
| 0.1.2 | minor | 0.2.0 |
| 0.1.2 | major | 1.0.0 |
| 0.1.2 | 0.3.0 | 0.3.0 |
3. 更新 package.json
使用 npm version {新版本号} --no-git-tag-version 更新版本号。
4. 更新 CHANGELOG.md
将 [Unreleased] 替换为新版本号和当前日期:
# 替换前
## [Unreleased]
# 替换后
## [{新版本号}] - YYYY-MM-DD
5. 构建验证
npm run lint && npm run build
确保版本更新后项目仍可正常编译。
6. 查看变更并确认
git status
git diff --stat
向用户展示待提交的变更,等待确认。
7. 提交变更
git add package.json package-lock.json CHANGELOG.md README.md README.zh-CN.md
git commit -m "chore: bump version to {新版本号}"
8. 创建 Tag(默认执行)
⚠️ 除非用户明确说"不要 tag",否则必须创建 tag。
git tag v{新版本号}
注意:tag 使用 v 前缀(如 v0.2.0),package.json 中不带前缀。
9. 推送到远程(默认执行)
git push
git push origin v{新版本号}
10. 提醒用户发布到 npm
⚠️ npm publish 需要 OTP 认证,无法自动完成。此步骤仅提醒用户手动执行。
在所有 git 操作完成后,输出提醒:
请手动执行 `npm publish` 完成 npm 发布。
除非用户明确说"--no-publish"或"不要发布",否则必须输出此提醒。
示例场景
场景 1:默认 patch 升级
输入: "升级版本号"
- 读取 package.json:
0.1.2 - 计算:
0.1.3 npm version 0.1.3 --no-git-tag-version- 更新 CHANGELOG.md
npm run lint && npm run build- git commit + tag
v0.1.3+ push - 提醒用户手动执行
npm publish
场景 2:minor 升级
输入: "升级 minor 版本"
- 读取:
0.1.2→ 计算:0.2.0 - 同上流程
场景 3:仅升级不发布
输入: "升级版本 --no-publish"
- 同场景 1 的步骤 1-6
- 跳过 npm publish
注意事项
- package.json 版本号无
v前缀,git tag 有v前缀 - 提交前必须通过
npm run lint && npm run build - 遵循 Conventional Commits:
chore: bump version to {版本号} - CHANGELOG.md 中
[Unreleased]节必须存在才会替换