Spec-Zone.ru › Yarn Classic

3. Версии зависимостей

Семантическое управление версиями

Пакеты в Yarn следуют Семантическому управлению версиями, также известному как «semver». При установке нового пакета из реестра он будет добавлен в вашу package.json с диапазоном версий semver.

Эти версии разбиты на major.minor.patch и выглядят как одна из этих: 3.14.1, 0.42.0, 2.7.18. Каждая часть версии увеличивается в разное время:

  • Увеличивайте major при внесении несовместимых изменений в API пакета.
  • Увеличивайте minor при добавлении новой функциональности, сохраняя обратную совместимость
  • Увеличивайте patch при внесении исправлений ошибок, сохраняя обратную совместимость

Примечание: Иногда к формату semver также добавляются «метки» или «расширения», которые отмечают предварительные версии или бета-версии (например, 2.0.0-beta.3)

Когда разработчики говорят о двух версиях semver, которые «совместимы» друг с другом, они имеют в виду обратно совместимые изменения (minor и patch).

Диапазоны версий

Когда вы хотите указать зависимость, вы указываете её имя и диапазон версий в вашем package.json, как в одном из этих примеров:

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

Вы заметите, что у нас есть несколько символов, отличных от версии. Эти символы, >=, <, ^, и ~, являются операторами и используются для указания диапазонов версий.

Цель диапазона версий — указать, какие версии зависимости будут работать с вашим кодом.

Операторы сравнения

Каждый диапазон версий состоит из операторов сравнения. Эти операторы — это просто оператор, за которым следует версия. Вот некоторые из основных операторов:

Оператор Описание
<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). Если оператор сравнения включает версию с меткой предварительного релиза, он будет соответствовать только версиям, имеющим ту же метку предварительного релиза версии.

Например, диапазон >=3.1.4-beta.2 будет соответствовать 3.1.4-beta.2 или 3.1.4-beta.12, но не будет соответствовать 3.1.5-beta.1 даже несмотря на то, что она технически «больше или равна» (>=) версии 3.1.4-beta.2.

Предварительные релизы, как правило, содержат случайные несовместимые изменения, и обычно вы не хотите сопоставлять предварительные релизы за пределами указанной вами версии, поэтому это поведение полезно.

Расширенные диапазоны версий

Диапазоны с дефисом

Диапазоны с дефисом (например, 2.0.0 - 3.1.4) указывают на включённый набор. Если часть версии опущена (например, 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.

Диапазон версий Расширенный диапазон версий
`` (пустая строка) * или >=0.0.0
2 2.x.x или >=2.0.0 <3.0.0
3.1 3.1.x или >=3.1.0 <3.2.0
Диапазоны с тильдой

Использование ~ со специфицированной второстепенной версией позволяет patch изменения. Использование ~ только с указанной основной версией позволит minor изменениям.

Диапазон версий Расширенный диапазон версий
~3.1.4 >=3.1.4 <3.2.0
~3.1 3.1.x или >=3.1.0 <3.2.0
~3 3.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 в 3.1.4 или 4 в 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 README.
  • Опробуйте эту систему управления версиями на реальных пакетах, используя калькулятор npm semver.

© 2016–present Yarn Contributors
Licensed under the BSD License.
https://classic.yarnpkg.com/en/docs/dependency-versions

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API