pakage.json 中對引入依賴包版本進(jìn)行管理時,dependencies中常晨唬可以看到類似 ^1.2.0 或 ~1.2.0 這樣的版本范圍指示杠茬。那么,這里的 ^ 和 ~ 具體表示什么含義呢弛随。
詳細(xì)內(nèi)容可以查看npm的官方文檔
上面的鏈接中高級范圍語法一節(jié)瓢喉,表示版本范圍可以用的符號有 - x ~ ^
這里簡單把 ^ 和 ~ 的區(qū)別摘抄一下,備忘舀透。
一個完整的版本號組表示為: [主要版本號栓票,次要版本號,補(bǔ)丁版本號]
1. 用 ~ 指示范圍
如果指定了次要版本愕够,允許補(bǔ)丁版本升級走贪。如果沒有指定次要版本,允許次要版本升級惑芭。
能夠接受的版本范圍 | 說明 | |
---|---|---|
~1.2.3 | 1.2.3 <= version < 1.3.0 | |
~1.2 | 1.2.0 <= version < 1.3.0 | |
~1 | 1.0.0 <= version < 2.0.0 | |
~0.2.3 | 0.2.3 <= version < 0.3.0 | |
~0.2 | 0.2.0 <= version < 0.3.0 | |
~0 | 0.0.0 <= version < 1.0.0 | |
~1.2.3-beta.2 | 1.2.3-beta.2 <= version < 1.3.0 | 1.2.3版允許高于beta.2的beta版坠狡,但1.2.4-beta.2不被允許,因?yàn)槭菍儆诹硪粋€版本號組的beta版本遂跟。 |
2. 用 ^ 指定范圍
允許不會改變最左邊的不為零的版本號的版本提升逃沿,也就是說,1.0.0允許次要幻锁、補(bǔ)丁版本升級凯亮,0.1.0允許補(bǔ)丁版本升級,^0.0.x 不允許升級哄尔。
有許多開發(fā)者把 '0.x' 中的 'x' 改變作為重大改變的指示假消。
一個普遍的做法是,^ 適合使用在當(dāng)開發(fā)者從 0.2.4 升級到 0.3.0 可能會做出不兼容的改變時究飞。一般情況下置谦,假定了在0.2.4 到 0.2.5 不會有不兼容改變,可以有一些新增(但不改變兼容)的改變亿傅。
能夠接受的版本范圍 | 說明 | |
---|---|---|
^1.2.3 | 1.2.3 <= version < 2.0.0 | |
^0.2.3 | 0.2.3 <= version < 0.3.0 | |
^0.0.3 | 0.0.3 <= version < 0.0.4 | |
^1.2.3-beta.2 | 1.2.3-beta.2 <= version < 2.0.0 | 允許1.2.3 版的高于beta-2 的beta版本 |
^0.0.3-beta.2 | 0.0.3-beta.2 <= version < 0.0.4 | 只允許0.0.3 版的高于beta-2 的版本 |
當(dāng)解析帶有^的版本范圍時媒峡,補(bǔ)丁版本號缺少會補(bǔ) 0,但是會靈活的處理葵擎,即時主要谅阿、次要版本號都為 0 也可以。
能夠接受的版本范圍 | |
---|---|
^1.2.x | 1.2.0 <= version < 2.0.0 |
^0.0.x | 0.0.0 <= version < 0.1.0 |
^0.0 | 0.0.0 <= version < 0.1.0 |
當(dāng)次要、補(bǔ)丁版本號缺少時會當(dāng)作 0签餐,但也會靈活處理寓涨,即時主版本號為 0 也可以 。
能夠接受的版本范圍 | |
---|---|
^1.x | 1.0.0 <= version < 2.0.0 |
^0.x | 0.0.0 <= version < 1.0.0 |