版本格式

主版本号.次版本号.修订号,版本号递增规则如下:

  1. 主版本号(major):当你做了不兼容的 API 修改
  2. 次版本号(minor):当你做了向下兼容的功能性新增
  3. 修订号(patch):当你做了向下兼容的问题修正

先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸

先行版本号

先行版本号的优先级低于相关联的标准版本,可以被标注在 patch 之后,连接号“-”加上以句点分隔的标识符(标识符必须属于[0-9A-Za-z-])组成,数字类型前方禁止补 0。例如:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7。

版本编译元数据

可以被标注在 patch 之后,先加上一个加号再加上以句点分隔的标识符(标识符必须属于[0-9A-Za-z-])组成,当判断版本的优先层级时,版本编译元数据可(SHOULD)被忽略。

版本的优先级

判断优先层级时,必须把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较。由左到右依序比较每个标识符,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。当主版本号、次版本号及修订号都相同时,改以优先层级比较低的先行版本号决定。例如:1.0.0-alpha < 1.0.0。有相同主版本号、次版本号及修订号的两个先行版本号,其优先层级必须通过由左到右的每个被句点分隔的标识符来比较,直到找到一个差异值后决定:只有数字的标识符以数值高低比较,有字母或连接号时则逐字以 ASCII 的排序来比较。数字的标识符比非数字的标识符优先层级低。若开头的标识符都相同时,栏位比较多的先行版本号优先层级比较高。范例:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1

npm 中声明包的更新类型

npm 命令生成先行版本号

从 npm6.4.0 开始,可以使用 npm version 的–preid 选项

1
2
3
4
5
6
$ npm version prerelease --preid=alpha
v0.1.1-alpha.0
$ npm version prerelease --preid=alpha
v0.1.1-alpha.1
$ npm version prerelease --preid=alpha
v0.1.1-alpha.2

参考

  1. about-semantic-versioning
  2. 语义化版本 2.0.0
  3. are-there-npm-version-prerelease-identifiers