tgoop.com/startpoint_dev/46
Last Update:
🪄 Разбираемся в семантическом версионировании: как управлять зависимостями в npm без хаоса
Семантическое версионирование, или SemVer, является популярной системой версионирования в мире программирования, особенно в экосистеме Node.js и npm. Эта методология активно применяется для управления версиями пакетов и модулей, чтобы облегчить управление зависимостями и минимизировать риски, связанные с обновлениями. Разберём основные составляющие семантического версионирования:
1️⃣ Основной номер версии (Major version) – увеличивается, если сделаны изменения, ломающие обратную совместимость.
2️⃣ Минорный номер версии (Minor version) – увеличивается, когда добавляются новые возможности, не ломающие существующий функционал.
3️⃣ Патч-версия (Patch version) – увеличивается при внесении исправлений ошибок, которые не затрагивают интерфейсы и не добавляют новых функциональностей.
👉 Пример версии по SemVer: 2.3.1, где 2 – основной номер, 3 – минорный, 1 – патч.
В package.json версии зависимостей можно обозначать следующими способами:
🔹 Точная версия: Указание конкретной версии, например, "react": "18.2.0". Это гарантирует, что будет использована именно эта версия.
🔹 Звездочка (*) или x: Означает использование любой версии в пределах указанной мажорной версии. Например: "react": "18.x"
🔹 Знак тильда (~): Использование тильды, например, "eslint": "~7.2.0", позволяет установить последнюю патч-версию для указанного минорного изменения. Это означает, что будут использованы все последующие патчи к версии 7.2.
🔹 Знак каретки (^): Каретка, например, "webpack": "^4.0.0", позволяет обновляться до последней минорной версии в рамках мажорной версии 4. Так, npm сможет установить любую версию от 4.0.0 до 5.0.0 не включительно.
🔹 Оператор сравнения (>=): Определяет минимально допустимую версию. Например, если указано "lodash": ">=4.17.0" , npm будет устанавливать версию lodash не ниже 4.17.0. Это означает, что при наличии более новых версий, подходящих под эту спецификацию, они будут установлены. Но с этим способом стоит быть осторожнее, так как могут выйти новые мажорные версии, сильно ломающие обратную совместимость.
🔹 Git-репозитории и теги: Можно указать зависимость от конкретного git-commit'a или тега, например, "a-library": "github:myusername/a-library#v1.0.0".
Использование этих подходов позволяет контролировать версии зависимостей в проекте, минимизируя риски поломок из-за неожиданных изменений в используемых библиотеках и модулях. SemVer и npm предоставляют разработчикам гибкие инструменты для управления зависимостями в их проектах.
🔗 Подробнее о семанитическом версионировании можно прочитать в официальной документации. А в этой статье подробно описано использование SemVer в npm.
BY Настя Котова // Frontend & Node.js
Share with your friend now:
tgoop.com/startpoint_dev/46
