К списку постов

Версионирование пакетов

Этот пост мне навеяла библиотека axios, которую я конечно люблю, но ломать совместимость в версии 0.22.0 по сравнению с 0.21.0 - неприемлемо. Да и вообще иметь 0 в начале так себе...

Версии для большинства пакетов и приложений состоят из 3-х цифр, разделённых точкой. К примеру в package.json вы легко сможете найти версию в поле version:

{
    "name": "nestjs-rmq",
    "version": "2.5.1"
}

И эти числа несут в себе больше смысла чем кажется на первый взгляд. Это стандартная схема версионирования программных продуктов. Она конечно может варьироваться от типов продуктов или языков, но общие принципы всё равно будут применимы. Ниже мы рассмотрим схему, которую в частности применяется в npm.

Итак, как расшифровываются данные обозначения:

2.5.1
major.minor.patch

Каждое из этих чисел показывает:

  • Значительность изменений
  • Обратную совместимость
  • Тип изменений

Обратная совместимость - приложение ваших пользователей продолжает работать таким же образом как было, после обновления пакета без необходимости внесения изменений в код. То есть обновляться можно без проблем.

Итак, допустим у нас приложение версии 1.0.0. Всегда первую публичную версию начинайте с 1.0.0. Не будьте как axios 🤬!

Если вы вносите исправление багов, безопасности или меняете архитектуру без добавления фич и потери обратной совместимости - нужно поднимать версию patch. И ваше приложение будет версии 1.0.1.

Если вы добавляете новую фичу, но при этом снова сохраняете обратную совместимость - нужно поднимать minor и приложение будет 1.1.0.

Если вдруг вы поменяете пакет, так, что тот, кто его использует, будет вынужден вносить изменение в код - поднимайте major: 2.0.0.

Ну а если хотите "релиз кандидат" или beta версию - 2.0.0-rc.1.

Именно по такой схеме ожидается работе в npm. Для этого вы и ставим в package.json axios: ^0.21.0, ожидая, что нам будут прилетать все обновления, кроме major (^ проставляется по умолчанию при установке зависимостей). Если не хотите даже minor - пишите axios: ~0.21.0.

Потому не ломайте приложения, поднимайте версию правильно.

Подпишись на статьи

Всего 1 раз в месяц я буду высылать вам подборки свежих статей с сайта.

Если хотите получать материалы и статьи каждую неделю подпишитесь на канал в Telegram PurpleCode.