如何实现升级package.json版本并通过gh release创建对应GitHub发布标签
实现版本升级+GitHub发布的一键命令
直接写个bash脚本就能搞定,支持传入patch/minor/major参数指定升级类型,同时自动创建GitHub发布。
脚本代码(release.sh)
#!/bin/bash # 校验输入参数是否合法 if [[ "$1" != "patch" && "$1" != "minor" && "$1" != "major" ]]; then echo "请传入合法的版本升级类型:patch/minor/major" exit 1 fi # 执行npm版本升级,禁用git自动打标签 NEW_VERSION=$(npm version "$1" --git-tag-version false) # 移除版本号前的v前缀 NEW_VERSION=${NEW_VERSION#v} # 提交版本变更并推送至远程仓库 git add package.json package-lock.json git commit -m "chore: bump version to $NEW_VERSION" git push # 创建GitHub发布 gh release create "v$NEW_VERSION" --title "Release v$NEW_VERSION" --notes "版本升级类型:$1"
脚本说明
- 先检查输入参数是否为合法的升级类型,不合法直接提示退出
npm version加--git-tag-version false是为了避免npm自动创建标签,后续用gh统一处理标签和发布- 获取新版本号并移除前缀
v,确保后续创建标签时格式统一 - 提交版本文件变更并推送到远程,保证仓库代码同步
- 调用
gh release create创建发布,标签用v+版本号的格式,标题和备注可根据需求修改
gh release create 常用选项(中文翻译)
<tag>: 必填项,指定发布的标签名称,例如v1.2.3--title <string>: 设置发布的标题--notes <string>: 填写发布的备注内容--notes-file <file>: 从指定文件中读取备注内容(适合长备注)--draft: 将发布设为草稿状态,不对外公开--prerelease: 将发布标记为预发布版本--target <branch>: 指定发布对应代码的分支,默认使用当前分支的HEAD
使用方法
- 将上述脚本保存为
release.sh,放在项目根目录 - 给脚本添加执行权限:
chmod +x release.sh - 执行脚本完成升级和发布:
- 补丁版本升级:
./release.sh patch - 功能版本升级:
./release.sh minor - 大版本升级:
./release.sh major
- 补丁版本升级:
内容的提问来源于stack exchange,提问作者GorvGoyl
相关产品推荐
相关产品推荐

