npm项目版本号遵循语义化版本规范,这个规范目前的版本是:2.0.0。
语义化版本规范
规范文本在这里。
主要的规则如下:
版本格式:主版本号.次版本号.修订号
版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改,
次版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正。
先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。
其他重要规则:
- 1.0.0之前的版本不被认为是稳定版本,这个版本和之后的版本才被认为是公共API。
- 主版本号更新,次版本号和修订号都要归零。
- 次版本号更新,修订号要归零。
- 版本发布后,禁止改变该版本的内容,任何修改都要以新版本发布。
- 先行版本低于相关联的标准版本,通常表示稳定性和兼容性都不够。
- 先行版本后加在修订号之后,二者之间用“-”连接。
- 版本号比较:
版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,“必须 MUST ”把版本依序拆分为主版本号、次版本号、修订号及先行版本号后进行比较(版本编译信息不在这份比较的列表中)。由左到右依序比较每个标识符号,第一个差异值用来决定优先层级:主版本号、次版本号及修订号以数值比较,例如:1.0.0 < 2.0.0 < 2.1.0 < 2.1.1。当主版本号、次版本号及修订号都相同时,改以优先层级比较低的先行版本号决定。例如:1.0.0-alpha < 1.0.0。有相同主版本号、次版本号及修订号的两个先行版本号,其优先层级“必须 MUST ”透过由左到右的每个被句点分隔的标识符号来比较,直到找到一个差异值后决定:只有数字的标识符号以数值高低比较,有字母或连接号时则逐字以 ASCII 的排序来比较。数字的标识符号比非数字的标识符号优先层级低。若开头的标识符号都相同时,栏位比较多的先行版本号优先层级比较高。范例:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0- rc.1 < 1.0.0。
可见,定制语义化版本规范是为了便于不同的开发者相互协作。
npm 版本范围声明
基本
<
低于指定版本<=
低于等于指定版本>
高于指定版本>=
高于等于指定版本=
等于指定版本。不使用任何符号就默认采用等于号。
先行版本
如果指定了先行版本,版本范围不会超过该版本对应的标准版本。这是由先行版本的特殊情况决定的。
进阶
-
表示两个版本之间的版本(包含两端)。*(X or x)
,通配符。~
表示在当前版本的修订版本号范围内变化。^
表示的范围大于等于当前版本,小于最左侧非零数字变化的版本。
举例说明^
符号的作用:
1 |
|
通过例子可以发现^
表示的范围和指定的版本号有很大的关联,对于1.0.0以上的版本号,^
表示的范围能达到下一个兼容版本。但对于1.0.0以下的版本号,其表示的范围非常的小。这也和非公共API版本的特性有关。