package.json中,指定第三方package的version需要注意
我们现在采用的版本号规则是这样的,比如 1.2.3 1 -> 主版本号(major): 当你做了不兼容的api修改 2 -> 次版本号(minor): 当你做了向下兼容的 功能性新增 3 -> 修订号(patch): 当你做了向下兼容的问题修正
同时,类似 1.0.0-alpha的版本号是低于 1.0.0的,很明显,后者是正式版 1.0.0-alpha.3 将会匹配1.0.0-alpha-7,但是不会匹配beta,或者2.0.0
我们自己用的时候,还是写死吧,不要加 ~,也不要加 ^
~ 曲线 —> 如果指定了次版本号,就匹配次版本号,不然就匹配主版本号的修改
- ~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)
- ~1.2.3-beta.2 := >=1.2.3-beta.2 <1.3.0
^ 上尖号 —> 对最左边第一个不为0的版本号进行匹配
- ^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
- ^1.2.3-beta.2 := >=1.2.3-beta.2 <2.0.0
^ 上尖号的特殊情况
在这里,如果修订号(patch)没有指定,一般是这样的1.2.x,那么x会被认为是0,就是1.2.0. 但是有可能会出现0.0.x或者0.0的情况,这种情况下会也会进行匹配
-
^1.2.x := >=1.2.0 <2.0.0
-
^0.0.x := >=0.0.0 <0.1.0
-
^0.0 := >=0.0.0 <0.1.0
-
^1.x := >=1.0.0 <2.0.0
-
^0.x := >=0.0.0 <1.0.0