Хранение версий
Смотрите, классическая и привычная схема хранить версии пакетов, в поле version
файла package.json
.
И это справедливо для пакетов, которые мы скачиваем из удаленного хранилища.
Однако пакет в рабочем репозитории в исходном виде и публикуемый пакет совсем не обязательно одно и тоже.
Поэтому давайте сразу договоримся, что пакетом мы будем называть пакет в исходном виде в рабочем репозитории,
а собранный пакет или публикуемый пакет – тот же пакет, но который возможно как-то обработан для того, чтобы отправится в удаленное хранилище.
Про версии
Вместе с этим можно ввести два отдельных понятия версий:
Версия пакета
Просто версия пакета или публикуемая версия – это та версия, которая будет использована для публикации пакета, и которая несет настоящую семантическую и смысловую нагрузку для версионирования пакета.
В дальнейшем в этой книге под версией пакета мы будем иметь в виду именно это смысловое значение.
Поле version
Версия в package.json – версия, которая хранится в поле version
файла package.json
в исходном коде.
Может совпадать по функциональной нагрузке с настоящей версией, а может и нет.
Главная функциональная нагрузка этого поля – обеспечивать консистентную линковку пакетов в репозитории во время разработки. При этом линковкой занимается пакетный менеджер – yarn, npm или любой другой.
Хранение версий
Собственно pvm, в зависимости от ваших требований, может хранить версию пакета в разных местах:
- В поле
version
– классическая схема. - В релизном теге. В зависимости от конфигурации репозитория это может быть тег вида
vX.Y.Z
или жеrelease-<date>-<suffix>
. Если у вас много пакетов в обоих случаях pvm умеет хранить версии пакетов в аннотации тега. - В отдельном файле, где хранить соответствия
<имя пакета> -> <версия пакета>
.
По умолчанию pvm использует поле version
для хранения версий пакетов.
Подробнее о смысле хранения версий пакетов монорепозитория вне полей version
файлов package.json
и как это можно настроить в pvm
мы рассмотрим в следующих частях данной главы.