Skip to main content

Хранение версий

Смотрите, классическая и привычная схема хранить версии пакетов, в поле version файла package.json. И это справедливо для пакетов, которые мы скачиваем из удаленного хранилища. Однако пакет в рабочем репозитории в исходном виде и публикуемый пакет совсем не обязательно одно и тоже. Поэтому давайте сразу договоримся, что пакетом мы будем называть пакет в исходном виде в рабочем репозитории, а собранный пакет или публикуемый пакет – тот же пакет, но который возможно как-то обработан для того, чтобы отправится в удаленное хранилище.

Про версии

Вместе с этим можно ввести два отдельных понятия версий:

Версия пакета

Просто версия пакета или публикуемая версия – это та версия, которая будет использована для публикации пакета, и которая несет настоящую семантическую и смысловую нагрузку для версионирования пакета.

В дальнейшем в этой книге под версией пакета мы будем иметь в виду именно это смысловое значение.

Поле version

Версия в package.json – версия, которая хранится в поле version файла package.json в исходном коде. Может совпадать по функциональной нагрузке с настоящей версией, а может и нет.

Главная функциональная нагрузка этого поля – обеспечивать консистентную линковку пакетов в репозитории во время разработки. При этом линковкой занимается пакетный менеджер – yarn, npm или любой другой.

Хранение версий

Собственно pvm, в зависимости от ваших требований, может хранить версию пакета в разных местах:

  1. В поле version – классическая схема.
  2. В релизном теге. В зависимости от конфигурации репозитория это может быть тег вида vX.Y.Z или же release-<date>-<suffix>. Если у вас много пакетов в обоих случаях pvm умеет хранить версии пакетов в аннотации тега.
  3. В отдельном файле, где хранить соответствия <имя пакета> -> <версия пакета>.

По умолчанию pvm использует поле version для хранения версий пакетов. Подробнее о смысле хранения версий пакетов монорепозитория вне полей version файлов package.json и как это можно настроить в pvm мы рассмотрим в следующих частях данной главы.