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

其它

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

你可能感兴趣的:(yarn,semver,yarn,version,semver,semantic)