使用三个整数来记录版本号:MAJOR.MINOR.PATCH(主版本号.次版本号.修订号)
用户
可以在 package.json 中指定特定版本或设置版本范围来匹配需要的版本
符号 | 规则 | 示例 |
---|---|---|
> < >= <= = | 优先层级比较器 | |
|| | 使用 或 逻辑组合上述比较器 | |
空格 | 使用 且 逻辑组合上述比较器 | |
- | 指定版本范围 |
1.2.3 - 2.3.4 := >=1.2.3 <=2.3.4 1.2.3 - 2.3 := >=1.2.3 <2.4.0 1.2.3 - 2 := >=1.2.3 <3.0.0 1.2 - 2.3.4 := >=1.2.0 <=2.3.4
|
* 或 x |
代表major、 minor或 patch的版本数字 |
* := >=0.0.0 (Any version satisfies) 1.x := >=1.0.0 <2.0.0 (Matching major version) 1.2.x := >=1.2.0 <1.3.0 (Matching major and minor versions) "" (empty string) := * := >=0.0.0 1 := 1.x.x := >=1.0.0 <2.0.0 1.2 := 1.2.x := >=1.2.0 <1.3.0
|
~ |
匹配最新的patch版本 |
~1.2.3 := >=1.2.3 <1.(2+1).0 := >=1.2.3 <1.3.0 ~1.2 := >=1.2.0 <1.(2+1).0 := >=1.2.0 <1.3.0 (Same as 1.2.x) ~1 := >=1.0.0 <(1+1).0.0 := >=1.0.0 <2.0.0 (Same as 1.x) ~0.2.3 := >=0.2.3 <0.(2+1).0 := >=0.2.3 <0.3.0 ~0.2 := >=0.2.0 <0.(2+1).0 := >=0.2.0 <0.3.0 (Same as 0.2.x) ~0 := >=0.0.0 <(0+1).0.0 := >=0.0.0 <1.0.0 (Same as 0.x)
|
^ |
匹配最新的minor版本 |
^1.2.3 := >=1.2.3 <2.0.0 ^0.2.3 := >=0.2.3 <0.3.0 ^0.0.3 := >=0.0.3 <0.0.4
|
带有先行版本号、版本编译信息的匹配规则较少用到,在此不做记录,可移至文末链接阅读。
建议使用~来标记版本号,保证包中的bug可以得到修复,同时避免依赖包大变动影响项目稳定性
:=
means 定义为
版本的优先层级指的是不同版本在排序时如何比较。判断优先层级时,“必须 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。
发布者
新发布的项目版本应该是 1.0.0。
主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变。这样的公共 API 不应该被视为稳定版。
版本号递增规则如下
-
major:当你做了不兼容的 API 修改
-
minor:当你做了向下兼容的功能性新增
-
patch:当你做了向下兼容的问题修正
其他
-
先行版本号:先行版本号可以被标注在修订版之后,先加上一个连接号,再加上一连串以句点分隔的标识符号来修饰。先行版的优先级低于相关联的标准版本。被标上先行版本号则表示这个版本并非稳定而且可能无法达到兼容的需求。范例:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92。
-
版本编译信息:可以被标注在修订版或先行版本号之后,先加上一个加号再加上一连串以句点分隔的标识符号来修饰。当判断版本的优先层级时,版本编译信息可被忽略。因此当两个版本只有在版本编译信息有差别时,属于相同的优先层级。范例:1.0.0-alpha+001、1.0.0+20130313144700、1.0.0-beta+exp.sha.5114f85。
标识符号必须由 ASCII 码的英数字和连接号 [0-9A-Za-z-] 组成,且禁止留白。数字型的标识符号禁止在前方补零。
网友评论