npm version升级版本号

作者:ManfredHu
链接:http://www.manfredhu.com/2019/03/30/46-npm-version/index.html
声明:版权所有,转载请保留本段信息,谢谢大家

npm version

版本号的定义

一般项目里面,npm run xxx可以执行package.json里面script的指令。
对于库的维护者来说,其实每次发布npm包要手动去更改package.json里面的版本号是很烦的。

npm是有命令可以帮助我们升级package.json里面的版本号的。就是我们标题说的npm version命令。

一般我们的版本号会用类似1.2.3这样三位数来表示一个版本。

  • 第一个数字1表示主版本,major
  • 第二个数字2表示小版本,minor
  • 第三个数字3表示修订版本,一般用于修补bug,patch

当然除了这些还有prepatch, preminor, premajor, prerelease这几个,需要的同学自行google。

升级修订版本,版本号的命令,一般也是用的最多的。别人反馈一个bug,修订后需要升级版本号并发布npm。
npm publish之前需要执行CI过程,CI成功则升级版本号,然后再执行发布。

升级版本号命令

1
npm version patch -f

单独执行npm version patch这个命令升级patch的版本,但是一般是不成功的,因为仓库不干净,但是可以加-f参数强制提交。
但是这个命令只是升级版本号而已,并不会提交代码。

除了patch修补版本还有major和minor

  • 升级主版本号npm version major
  • 升级主版本号npm version minor

所以我们还要加入一点黑科技,就是npm定义的几个npm script的钩子。

  • preversion
  • version
  • postversion

如果你在package.json配置下面的命令。

1
2
3
4
5
6
7
{
"scripts": {
"version": "echo 1",
"postversion": "echo 2",
"preversion": "echo 3"
}
}

然后执行npm version patch -f,会依次输出3,1,2。所以这三个定义的顺序依次是preversion,version,postversion
我们可以在versionpostversion提交代码。

升级版本号并自动提交代码

如下面这样的配置

1
2
3
4
5
6
{
"scripts": {
"version": "git add .",
"postversion": "git push"
}
}

会在执行npm version patch -f后自动提交当前分支的代码。注意就可以达到我们想要的效果。当然如果你加上各种CI/CD指令,就可以实现一个命令发布了。

这里git push如果不跟参数的话,在git版本不一样的情况下行为是不同的。推荐大家用新版本的matching,即push所有本地和远程两端都存在的同名分支。

参考


Copyright © 2015 - 2019 ManfredHu胡文峰的个人博客

All rights reserved. Designed and powered by ManfredHu.

粤ICP备18133029号