天天看點

Yarn的版本依賴管理

在持續內建的過程中,package的版本有着複雜而靈活的表達,比如:

^1.2.3

~1.2.3

>=1.2.3

等。Yarn對版本的了解即語義化版本。

版本數字的意義

版本數字的格式:major.minor.patch

也就是說,你所看到的版本數字,有三部分組成:

  1. major:主版本。有重大變化。
  2. minor:小版本。有功能上的變化。
  3. 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

來确定版本範圍以外,還有以下幾種方式:

  1. 使用

    - Hyphen

    (短線)連接配接兩個版本數字以表達版本範圍。
    • 1.2.3 - 4.5.6

      這個表示,隻要版本在1.2.3到4.5.6之間,都是可用的版本。需要強調的是,兩個斷點的版本都是包含的。也即,1.2.3和4.5.6都是适用的。

  2. 使用

    X or x

    (字母x)表示某個版本數字的全部。
    • 1.2.*

      這個表示,隻要是major.minor的版本數字正确,

      patch

      的數字可以使任意的。
  3. 使用

    * wildcard

    (星号)表示任意版本。
    • *

      Any version

  4. 使用

    ~ 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

  5. 使用

    ^ 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

其它

這個是語義化版本的小工具

這個是語義化版本的插件

繼續閱讀