Версії залежностей

Семантичне версіонування

Пакети в Yarn слідують Семантичному версіонуванні, ще відомою як “semver”. Коли ви встановлюєте новий пакет з реєстру, то він буде доданий до вашого package.json з semver діапазоном версій.

Ці версії розбиваються на major.minor.patch і виглядають як одна з цих: 3.14.1, 0.42.0, 2.7.18. Кожна частина версії збільшується з різних випадках:

  • Збільшуйте major коли Ви робите зміни які ломають or несумісні з теперішнім 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). Якщо компаратор включає версію з пре-реліз тегом він співпаде лише з версією яка має таку саму major.minor.patch версію.

Наприклад, діапазон >=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 калькулятор.