使用 npm version 进行包版本(tag)管理

为什么要用 npm version

  • npm version 是命令行工具,简洁高效。
  • npm version 的 tag 变动会同步到 package.json 的 version 字段
  • 使用 npm version 不需要关心之前的版本号是什么,工具会根据命令自动递增版本号

如何使用

npm version 的使用很简单:npm version xxx [-m message]。

这里的 xxx 有三个可选值:

  • major—主版本
  • minor—次版本
  • patch—补丁版本

这三个值单词分别对应版本号的三个部分。比如:1.2.3。这里的 1 对应 major,2 对应 minor,3 对应 patch。

这里的 -m message 是可选信息。如果不填,提交信息就是版本号。填了,就是 message 部分。

使用步骤

首先,将本地代码的修改 commit。因为 npm version 的执行需要工作区是干净的。

git add . git commit -m 'xxx'

然后,使用 npm version 修改版本号。npm version 会自动修改 package.json 的 version 字段并 add 和 commit。

npm version patch

将修改推送到远程服务器:

// 推送 commit
git push origin [branch]
// 推送 tag
git push origin --tags

删除本地 tag

有时,本地已经打了 tag,但推送到服务器报错——远程已经存在相同的 tag。这时,就需要删除本地的重复 tag,并重新打 tag。

// 删除本地 tag
git tag -d v1.2.3

指定 tag

因为有时远程存在更新的 tag,而 package.json 并没有及时更新。这时,可以指定 tag。

npm version 2.0.0

设置 tag 前缀

默认情况下,tag 的前缀是小写的 v。如果需要自定义,可以在项目根目录的 .npmrc 文件里配置:

// .npmrc
tag-version-prefix = 'V'

.npmrc 配置参考这个地址:https://docs.npmjs.com/cli/v6/using-npm/config#tag-version-prefix

比如有时需要配置 npm 源:

// .npmrc
registry = https://registry.npmmirror.com

包引入版本号,并在浏览器控制台显示

有时,为了快速定位线上版本是不是我们期望的版本,或者为了其他目的,我们需要将版本号引入项目。

// 项目文件,比如入口文件:main.js
// 把版本挂到 window 上,方便定位版本
window.version = require('../package.json').version
console.log(`%c version: ${window.version}`, 'background: #333;color: #bada55')

控制台显示版本号有一个需要注意的地方:打包需要在修改版本号之后。这意味着本地打包无法实现这个功能——不是说代码无效,而是打印出来的版本并不正确。