非常教程

Yarn参考手册

依赖和版本 | Dependencies and versions

3. Versions of dependencies(依赖的版本)

语义版本

Yarn中的包遵循语义版本控制,也称为“semver”。当你从注册表安装一个新的软件包时,它会被添加到你package.json的一个semver版本范围。

这些版本被分解成major.minor.patch,看上去就像其中的一个:3.14.10.42.02.7.18。版本的每个部分在不同的时间递增:

  • 当您对软件包的API 进行中断不兼容的更改时会增加major
  • Increment minor when you add new functionality while staying backwards-compatible
  • 增量patch当你做出错误修复,同时保持向后兼容

注意:有时候也有标签或扩展名,用于标记预发行版或者测试版等格式(例如2.0.0-beta.3

当开发人员谈论两个彼此“兼容”的semver版本时,他们指的是向后兼容的更改(minorpatch)。

版本范围

像这些中一个,如果要指定一个依赖你指定其名称和版本范围在你的package.json

{
  "dependencies": {
    "package-1": ">=2.0.0 <3.1.4",
    "package-2": "^0.4.2",
    "package-3": "~2.7.1"
  }
}

您会注意到我们有一些与版本不同的字符。这些字符,>=<^,和~,是操作者,他们都用于指定版本范围

版本范围的目的是指定哪些版本的依赖项适用于您的代码。

比较

每个版本范围都由比较器组成。这些比较器只是一个操作符,后跟一个版本。以下是一些基本的操作员:

比较

描述

<2.0.0

Any version that is less than 2.0.0

<=3.1.4

Any version that is less than or equal to 3.1.4

0.4.2

Any version that is greater than 0.4.2

=2.7.1

Any version that is greater than or equal to 2.7.1

=4.6.6

Any version that is equal to 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.23.1.4-beta.12,但将匹配3.1.5-beta.1,即使它是技术上 “大于或等于”( >=)的3.1.4-beta.2版本。

预发布通常会包含意外中断更改,通常您不希望与指定版本之外的预发布相匹配,因此此行为非常有用。

高级版本范围

连字符的范围

连字符范围(例如2.0.0 - 3.1.4)指定一个包含的集合。如果版本的一部分被遗漏(例如0.42),那么它们用零填充。

版本范围

扩展版本范围

2.0.0 - 3.1.4

=2.0.0 <=3.1.4

0.4 - 2

=0.4.0 <=2.0.0

X-Ranges

任何的Xx或者*可以用离开的部分或全部未指定的一个版本。

版本范围

扩展版本范围

*

=0.0.0 (any version)

2.x

=2.0.0 <3.0.0 (match major version)

3.1.x

=3.1.0 <3.2.0 (match major and minor version)

如果版本的一部分被忽略,则认为它是一个x范围。

版本范围

扩展版本范围

(empty string)

* or >=0.0.0

2

2.x.x or >=2.0.0 <3.0.0

3.1

3.1.x or >=3.1.0 <3.2.0

Tilde Ranges

使用~指定的次要版本允许patch更改。仅使用指~定的主要版本将允许minor更改。

版本范围

扩展版本范围

~3.1.4

=3.1.4 <3.2.0

~3.1

3.1.x or >=3.1.0 <3.2.0

~3

3.x or >=3.0.0 <4.0.0

注意:在tilde ranges中指定预发布只会匹配该同一完整版本中的预发布。例如,版本范围~3.1.4-beta.2可以匹配,3.1.4-beta.4但不是3.1.5-beta.2因为major.minor.patch版本不同。

Caret Ranges

允许修改不修改版本中的第一个非零数字,即3in 3.1.44in 0.4.2

版本范围

扩展版本范围

^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

注意:默认情况下,当您运行yarn add [package-name]它时将使用插入符号范围。

如果部分版本被遗漏,缺少的部分用零填充。但是,他们仍然会允许改变这个价值。

版本范围

扩展版本范围

^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

更多资源

  • 有关此版本控制系统如何工作的完整说明,请参阅node-semver自述文件。
  • 使用npm semver计算器在实际包上测试这个版本控制系统。
Yarn

Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

主页 https://yarnpkg.com/
源码 https://github.com/yarnpkg/yarn
发布版本 1.3.2

Yarn目录