在持續內建的過程中,package的版本有着複雜而靈活的表達,比如:
^1.2.3
,
~1.2.3
,
>=1.2.3
等。Yarn對版本的了解即語義化版本。
版本數字的意義
版本數字的格式:major.minor.patch
也就是說,你所看到的版本數字,有三部分組成:
- major:主版本。有重大變化。
- minor:小版本。有功能上的變化。
- patch:釋出包。修正了一些錯誤。
Yarn的版本操作概念
先說容易了解的。版本号前面的符号叫做
operator
,是用來操作版本号的。在它的操作下,可用版本可能是一個,也可能是多個。一個或多個
operator
加上
version number
就構成了
comparator
。這個東西能夠用來表達一個
version range
。不同的
comparator
存在下列不同的表達。
類似于,下面這些情況:
- >=1.2.3:大于等于1.2.3的版本都可以用。
- <=4.5.6:小于等于4.5.6的版本都可以用。
- =1.2.3:隻能使用1.2.3的版本。
簡單說就是,可用版本号落在一個連續的範圍内。你可以想象一下數軸上的數字區間。
- >1.2.3 <=4.5.6:大于1.2.3的版本,不包括1.2.3,且小于等于4.5.6的版本都是可用版本。
Yarn的版本操作符
- >, <, >=, <=
- ^
- ~
但是,有個地方要強調下。Yarn還支援這種操作:
- >=1.2.3 || < 1.2.0
這表示兩個版本數字集合的合并集。另外,關于
Pre-release
的版本,Yarn的考慮也頗有心計:
- >=1.2.3-beta.2
這個表示為大于等1.2.3-beta.2的版本都是可用的。但是,有個前提:1.2.3-beta保持不變。什麼意思?就是說,major.minor.patch這個結構上的數字不做變動,而僅僅變化
beta
版本的數字。比如:
- 1.2.3-beta.3
這個也是可用的。而下面這個則不可用:
- 1.2.4-beta.3
Yarn如何表達版本範圍
version range
在Yarn的版本管理中用的非常頻繁。除了可以用
comparator
來确定版本範圍以外,還有以下幾種方式:
- 使用
(短線)連接配接兩個版本數字以表達版本範圍。- Hyphen
-
1.2.3 - 4.5.6
這個表示,隻要版本在1.2.3到4.5.6之間,都是可用的版本。需要強調的是,兩個斷點的版本都是包含的。也即,1.2.3和4.5.6都是适用的。
-
- 使用
(字母x)表示某個版本數字的全部。X or x
-
1.2.*
這個表示,隻要是major.minor的版本數字正确,
的數字可以使任意的。patch
-
- 使用
(星号)表示任意版本。* wildcard
-
*
Any version
-
- 使用
(波浪号)表示某個可以被替代的版本數字結構。~ tilde
-
~1.2.3
這個表示,版本數字大于等于1.2.3且小于1.3.0的版本,都是适用的。類似于,
>=1.2.3 <1.3.0
-
~1.2
這個表示,版本數字大于等于1.2.0且小于1.3.0的版本, 都是适用的。類似于,
1.2.x
-
~1
這個表示,版本數字大于等1.0.0且小于2.0.0的版本,都是适用的。類似于,
或者1.x
>=1.0.0 <2.0.0
-
- 使用
(尖角号)表示版本數字結構中的第一個^ caret
數字是不可變的,其它都可以變化。非零
-
^1.2.3
這個表示,大于等于1.0.0的版本都是适用版本。類似于,
1.x
-
^0.1.2
這個表示,大于等于0.1.2且小于0.2.0的版本,都是适用版本。類似于,
>=0.1.2 <0.2.0
-
^0.0.1
這個表示,大于等于0.0.1且小于0.0.2的版本,都是适用版本。類似于,
>=0.0.1 <0.0.2
-
其它
這個是語義化版本的小工具
這個是語義化版本的插件