[major, minor, patch]
元组中最左边非零元素的更改。(Allows changes that do not modify the left-most non-zero element in the [major, minor, patch]
tuple.)
^1.2.3
:=1 >=1.2.3 <2.0.0-0
^0.2.3
:= >=0.2.3 <0.3.0-0
^0.0.3
:= >=0.0.3 <0.0.4-0
^1.2.3-beta.2
:= >=1.2.3-beta.2 <2.0.0-0
^0.0.3-beta
:= >=0.0.3-beta <0.0.4-0
^1.2.x
:= >=1.2.0 <2.0.0-0
^0.0.x
:= >=0.0.0 <0.1.0-0
^0.0
:= >=0.0.0 <0.1.0-0
^1.x
:= >=1.0.0 <2.0.0-0
^0.x
:= >=0.0.0 <1.0.0-0
在正则表达式中, ^
表示匹配匹配字符串的开头,利用这个联想, ^
表示的就是从头(最左边)开始,找第一个非 0 的版本号,固定这一位版本号。
例如 ^0.1.2
,从头开始第一个非 0 的版本号是第二位版本号 1
,因此第二位之前都是固定的,因此可以推断出它表示的范围是 >=0.1.2 <0.2.0
。
再如 ^1
, 首先补全到 3 位版本号,即 ^1.0.0
,从头开始第一个非 0 的版本号是第一位的 1
,因此第一位版本号是固定的,范围是 >=1.0.0 <2.0.0
。
特殊的 ,当 3 位版本号都是 0 的时候,即 ^0.0.0
, 此时从头往后找不到非 0 的版本号,则固定第一位,即固定主版本号,其他版本号随意,范围是 >=0.0.0 <1.0.0
。
次版本号
,则允许进行 修订号
修改。如果没有,则允许 次版本号
的更改。
~1.2.3
:= >=1.2.3 <1.3.0-0
~1.2
:= >=1.2.0 <1.3.0-0
(Same as 1.2.x
)~1
:= >=1.0.0 <2.0.0-0
(Same as 1.x
)~0.2.3
:= >=0.2.3 <0.3.0-0
~0.2
:= >=0.2.0 <0.3.0-0
(Same as 0.2.x
)~0
:= >=0.0.0 <1.0.0-0
(Same as 0.x
)~1.2.3-beta.2
:= >=1.2.3-beta.2 <1.3.0-0
~
常见于表示的一个范围,例如 1 ~
3, 它往往是夹在中间的,也就是中间第二位,而它的作用就是针对第二位的 次版本号(minor)
。
如果第二位(minor)存在,则固定第二位(minor), 可以改第三位(patch);
如果第二位(minor)不存在,则可以改第二位(minor),第一位(major)固定。
例如 ~1.2.3
, 第二位是 2
,存在第二位,因此固定第二位,范围是 >=1.2.3 < 1.3.0
。
例如 ~1.0.3
, 第二位是 0
,存在第二位,因此固定第二位,范围是 >=1.0.3 < 1.1.0
。
例如 ~1
, 不存在第二位,因此可以修改第二位,固定第一位,范围是 >=1.0.0 <2.0.0
。
例如 ~0
, 不存在第二位,因此可以修改第二位,固定第一位,范围是 >=0.0.0 <1.0.0
。