問題引入:我們在使用npm下載下傳依賴包的時候,在package.json中會出現對應包的版本号。可是我們會發現在版本号之前,一般都會有幾個特殊符号。例如:“~”,”^”,”>”……那麼這些符号都有什麼含義呢?
一般來說,版本号大體分為三個部分
major.minor.patch
主版本号.次版本号.修補版本号
1, version
版本号之前不帶任何标記表示必須依賴這個版本的包
例如:
"webpack-zepto": "0.0.1"
2, >
大于某個版本,表示隻要大于這個版本的安裝包都行
例如:
"node": "> 4.0.0"
3, >=
大于某個版本,表示隻要大于或等于這個版本的安裝包都行
例如:
"node": ">= 4.0.0"
4, <
小于某個版本,表示隻要小于這個版本的安裝包都行
例如:
"http-proxy-middleware": "<0.17.3"
5, <=
小于或等于某個版本,表示隻要小于或等于這個版本的安裝包都行
例如:
"http-proxy-middleware": "<=0.17.3"
5, ~
大概比對到哪個版本
如果minor版本号指定了,那麼minor最大加1,而patch如果存在大于目前值
如果minor和patch版本号未指定,那麼minor和patch版本号任意
如:~1.1.2,表示>=1.1.2 <1.2.0,可以是1.1.2,1.1.3,1.1.4,…..,1.1.n
如:~1.1,表示>=1.1.0 <1.2.0,可以是同上
如:~1,表示>=1.0.0 <2.0.0,可以是1.0.0,1.0.1,1.0.2,…..,1.0.n,1.1.n,1.2.n,…..,1.n.n
6, ^
版本号中最左邊的非0數字最大加1,其餘部分,大于目前值。
如:^1.1.2 ,表示>=1.1.2 <2.0.0,可以是1.1.2,1.1.3,…..,1.1.n,1.2.n,…..,1.n.n
如:^0.2.3 ,表示>=0.2.3 <0.3.0,可以是0.2.3,0.2.4,…..,0.2.n
如:^0.0,表示 >=0.0.0 <0.1.0,可以是0.0.0,0.0.1,…..,0.0.n
7, x
x的位置表示任意版本
如:1.2.x,表示可以1.2.0,1.2.1,…..,1.2.n
8, *
任意版本,”“也表示任意版本
如:*,表示>=0.0.0的任意版本
9, version1 - version2
大于等于version1,小于等于version2
如:1.1.2 - 1.3.1,表示包括1.1.2和1.3.1以及他們件的任意版本
10, ||
滿足range1或者滿足range2,可以多個範圍
如:<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0,表示滿足這3個範圍的版本都可以