自动版本化和生成 CHANGELOG 工具
standard-version: include lifecycle steps(bump, changelog, commit, tag)
- 自动修改 package.json 的 version
- 生成 changlog
- 提交当前记录
- 打 git tag
安装
# 安装standard-version
$ pnpm add -D standard-version
# Add an npm run script to your package.json
$ npm set-script release "standard-version"
使用
# –release-as, -r 指定版本号
# 示例 version = v1.0.0
# 万能
$ npm release -r x.x.x
# v2.0.0
$ npm release -r major
# v1.1.0
$ npm release -r minor
# v1.0.1
$ npm release -r patch
# v1.0.1-0
$ npm release -r prepatch
跳过某些步骤:
package.json
{
"standard-version": {
"skip": {
"changelog": true
}
}
}
版本管理与发布
git tag
语义化版本三段式:主版本(major).次版本(minor).修订版(patch),如 v1.2.1
- 修改主版本:架构升级或架构重大调整,不兼容的 API 修改
- 修改次版本:新功能上线或者模块大的调整,向下兼容的功能性新增
- 修改修订版:bug 修复上线,向下兼容的问题修正
其他定义,比如:1.2.0-beta.1,1.0.1-alpha.1,3.0.0-rc.1
- 内部测试版 alpha:一般不向外部发布,会有很多 Bug.一般只有测试人员使用
- 测试版 beta:这个阶段的版本会一直加入新的功能,在 alpha 版之后推出
- 最终测试版本 rc(Release Candidate):可能成为最终产品的候选版本,如果未出现问题则可发布成为正式版本
git tag version // 打 tag
git tag -a <tag名> -m <注释文字> // 打详细的 tag
git push origin v1.5 // 推送某一tag
git push origin --tags // 推送本地所有 tag
git tag -d v1.1.1 // 删除本地 tag
npm tag
npm 的 tag 有这几种类型:
- latest:最后版本,npm install 的就是这个
- beta:测试版本,一般内测使用,需要指定版本号 install,例如 3.1.0-beta.0
- next: 先行版本,npm install foo@next 安装,例如 3.0.2-alpha.0
npm dist-tag ls [<pkg>] // 查看包的tag
npm publish --tag beta // 发布测试版本包
npm dist-tag add my-package@1.0.1-beta.0 beta // 修改已发布的包类型为测试
npm dist-tag add my-package@1.0.0 latest // 修改已发布的包类型为最后版本
npm publish
- npm 注册账号
- npm 设置源为:www.npmjs.com/
- 终端 npm login
- package.json 配置 versions,files,main,private,keywords....,其中 versions 每次发布都得更新;files 写需要打包的文件,优先级高于 .npmignore 和 .gitignore,支持通配符;
- npm publish
查看 npm 打包内容:
npm publish --dry-run
npm pack
设置要发布的地址:
"publishConfig": { "registry": "http://registry.npm.xxx.com/" }