依賴的版本

2022-08-22 07:33:10 字數 2567 閱讀 1298

清晰使用的語義化版本的介紹,特別建議閱讀下最後的關於 ^ 修飾符的版本介紹,可能大部分人的理解都是錯的......

yarn 裡的包遵守 語義化版本,也叫 「semver」。 當你從資源庫安裝乙個新包,它會和語義版本範圍一起被新增到你的 package.json。

版本號可以劃分為主版本號.次版本號.修訂號,類似這些: 3.14.1、 0.42.0、 2.7.18。 不同的情況對應不同的版本號增長:

注意: 有時語義版本也會包含一些「標籤」或者「擴充套件」,用於標記預發布版本或者測試版本,比如 2.0.0-beta.3

請在 package.json 檔案裡同時使用依賴名稱和其版本範圍來指明所需要的依賴:

}

你一定注意到了除版本號外的那些特殊字元。 這些字元有 >=,<,^和~,它們是運算子,用來指定版本範圍。

版本範圍的用處是標明依賴的哪個版本會在**中起作用。

每個版本範圍組成 比較器。這些比較器是簡單 運算子 後面跟著乙個 版本號。以下是一些基本的運算子:

比較器描述

<2.0.0

任何小於2.0.0的版本

<=3.1.4

任何小於或等於3.1.4的版本 

>0.4.2

任何大於0.4.2的版本 

>=2.7.1

任何大於或等於2.7.1的版本 

=4.6.6

任何等於4.6.6的版本 

注意:如果沒有明確指定運算子,那麼版本範圍預設為 =,也就是說 = 是可選的。

用空格連線若干比較器可以建立 比較器集合。 最終版本範圍是它包含的比較器的交集。 例如,比較器集合 >=2.0.0 <3.1.4 表示「大於或等於 2.0.0 並小於 3.1.4」。

完整的版本範圍可以包含多個用 || 連線的比較器集合的並集。 如果並集的任何一邊滿足條件,整個版本範圍就滿足條件。 例如,版本範圍 <2.0.0 || >3.1.4 意味著「小於 2.0.0 或者大於 3.1.4」。 

版本號也可以包含預發布標籤(比如 3.1.4-beta.2)。 如果乙個比較器包含有預發布標籤的版本,它將只匹配有相同 major.minor.patch 的版本。 

例如,版本範圍 >=3.1.4-beta.2 將匹配 3.1.4-beta.2 或 3.1.4-beta.12,但不會匹配 3.1.5-beta.1,即使在理論上 3.1.5-beta.1版本 「大於或等於」 (>=) 3.1.4-beta.2 版本。

預發布版本通常包含一些不相容的修改,而且通常你也不會願意匹配到指定版本之外的預發布版本,所以上述匹配規則很有用。

連字元範圍

連字元範圍(例如 2.0.0 - 3.1.4)標明了乙個包含集合。數字 0 會被用來填充版本號中缺少的那些部分(例如 0.4 或 2)。

版本範圍

擴充套件的版本範圍

2.0.0 - 3.1.4

>=2.0.0 <=3.1.4

0.4 - 2

>=0.4.0 <=2.0.0

x範圍字元 x、x 或者 * 都可以作為萬用字元,用於填充部分或全部版本號。

版本範圍

擴充套件的版本範圍

*>=0.0.0(任意版本)

2.x>=2.0.0 <3.0.0(匹配主要版本)

3.1.x

>=3.1.0 <3.2.0(匹配主要和次要版本)

被省略的那部分版本號預設為 x 範圍。

版本範圍

擴充套件的版本範圍

``(empty string)

* 或 >=0.0.0

22.x.x 或 >=2.0.0 < 3.0.0

3.13.1.x 或 >=3.1.0 < 3.2.0

~ 字元範圍

同時使用字元 ~ 和次版本號,表明允許修訂號變更。同時使用字元 ~ 和主版本號,表明允許次版本號變更。

版本範圍

擴充套件的版本範圍

~3.1.4

>=3.1.4 <3.2.0

~3.1

3.1.x 或 >=3.1.0 <3.2.0 

~33.x 或 >=3.0.0 < 4.0.0

注意︰在波浪號範圍中指定預發布版本將只匹配和它完整版本號相同的預發布版本。 例如,版本範圍 ~3.1.4-beta.2 會匹配 3.1.4-beta.4 但不匹配 3.1.5-beta.2,因為 major.minor.patch 版本不同。

^ 字元範圍

字元 ^ 表明不會修改版本號中的第乙個非零數字,3.1.4 裡的 3 或者 0.4.2 裡的 4。

版本範圍

擴充套件的範圍版本

^3.1.4

>=3.1.4 <4.0.0

^0.4.2

>=0.4.2 <0.5.0

^0.0.2

>=0.0.2 <0.0.3

版本號中缺少的部分將被 0 填充,且在匹配時這些位置允許改變。

版本範圍

擴充套件的版本範圍

^0.0.x

>=0.0.0 <0.1.0

^0.0

>=0.0.0 <0.1.0

^0.x

>=0.0.0 <1.0.0

^0>=0.0.0 <1.0.0

引用自 

yum版本依賴問題

直接解壓系統映象包 centos7.5,版本映象 如下,krb5相關軟體版本為1.15.1 18。如mini安裝系統,系統會將krb5 libs軟體進行安裝,版本是1.15.1 18 1.與2.的實際條件 掛載系統映象到yum源 如安裝krb5 devel,krb5所有相關軟體版本都是1.15.1 ...

node modules中依賴的版本更新

描述 在執行專案的時候,老是會遇到依賴版本的問題,就想著能不能看到都那些需要申請,然後就查了一下,發現有人寫了一篇帖子,位址在這裡。然後我簡單的借鑑需要的一部分,記錄一下,方便以後使用。這個工具就是npm check 用npm安裝並使用,這樣就會出現本地依賴和你package.json中的依賴的比對...

Spring Boot 指定某個依賴的版本

spring boot 是個很好的框架,他為了他的一些功能生效,定義了一些依賴的版本。比如說 spring boot 1.5.x 中elasticsearch是2.4.x的,這個是他本身就定義好的。但是有時我們確需訪問5.x的。不要問我為什麼放著stater不用,偏要訪問5.x的,唉。就可以在dep...