天天看点

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

其它

这个是语义化版本的小工具

这个是语义化版本的插件

继续阅读