关于package.json中npm依赖包版本前的符号含义解析

一般来说,版本号大体分为三个部分

major.minor.patch

主版本号.次版本号.修补版本号

1. version

版本号之前不带任何标记表示必须依赖这个版本的包

例如:"webpack": "3.6.0",

2. >

大于某个版本,表示只要大于该版本的安装包即可

例如:"node": "> 6.0.0"

3. >=

大于等于某个版本,表示只要大于或等于该版本的安装包即可

例如:"npm": ">= 3.0.0"

4. <

小于某个版本,表示只要小于该版本的安装包即可

例如:"http-proxy-middleware": "< 0.17.3"

5. <=

小于或等于某个版本,表示只要小于或等于该版本的安装包即可

例如:"not ie <= 8"

6. ~

大概匹配到哪个版本

如果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

7. ^

版本号中最左侧的非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

8. x

x的位置表示任意版本
如:1.2.x, 表示可以是1.2.0, 1.2.1, ... 1.2.n

9. *

任意版本,
如:*,表示 >= 0.0.0的任意版本

10. version1 - version2

大于等于version1,小于等于version2
如:1.1.2 - 1.3.1,表示包括 1.1.21.3.1,以及他们中间的任意版本

11. ||

满足range1或满足range2,可以多个范围

如:<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0 表示满足这三个条件的版本都可以