Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
Версионирование и публикация
Lerna может увеличивать версии ваших пакетов и публиковать их в NPM, предоставляя различные опции для поддержки любого рабочего процесса.
Чтобы показать, как это работает, мы рассмотрим этот репозиторий.
Если вам проще учиться на практике, клонируйте репозиторий и следуйте инструкциям.
Репозиторий содержит три пакета или проекта:
-
header(библиотека React-компонентов) -
footer(библиотека React-компонентов) -
remixapp(приложение на фреймворке Remix, зависящее отheaderиfooter)
Мы опубликуем пакеты header и footer.
Обычно публикуется только часть проектов. Некоторые проекты могут быть приватными (например, только для тестов), другие — демонстрационными приложениями. В этом репозитории
remixappне является «приватным» в смысле сокрытия кода — он просто использует настройку"private": true, чтобы не публиковаться в NPM.
Версионирование
Lerna предоставляет команду version для увеличения версий пакетов, фиксации изменений и добавления соответствующих тегов.
lerna version --no-private
вы увидите следующий вывод:
lerna notice cli v5.1.2
lerna info current version 1.0.0
lerna info Assuming all packages changed
? Select a new version (currently 1.0.0) (Use arrow keys)
❯ Patch (1.0.1)
Minor (1.1.0)
Major (2.0.0)
Prepatch (1.0.1-alpha.0)
Preminor (1.1.0-alpha.0)
Premajor (2.0.0-alpha.0)
Custom Prerelease
Custom Version
Обратите внимание: параметр --no-private исключает все пакеты, помеченные как private в их package.json.
Lerna определяет текущие пакеты, находит их верс ии и предлагает следующую. Вы также можете явно указать версию, например lerna version 1.0.0. Подробнее в документации по версионированию. После выбора версии Lerna обновляет package.json, фиксирует изменения, добавляет тег версии (например v1.0.0) и отправляет коммит с тегом в удалённый репозиторий.
{
"name": "footer",
"version": "1.0.1",
"main": "dist/index.js",
...
}
Эта операция не отправляет пакеты в NPM. Для публикации используйте lerna publish.
Lerna определяет текущую версию через свойство version в lerna.json
Публикация в NPM
Если выполнить
lerna publish --no-private
Lerna выполнит процесс версионирования (как lerna version) и дополнительно опубликует пакеты в NPM. Вы увидите следующий вывод:
lerna notice cli v5.1.2
lerna info current version 1.0.0
lerna info Assuming all packages changed
? Select a new version (currently 1.0.0) Patch (1.0.1)
Changes:
- footer: 1.0.0 => 1.0.1
- header: 1.0.0 => 1.0.1
? Are you sure you want to publish these packages? Yes
lerna info execute Skipping releases
lerna info git Pushing tags...
lerna info publish Publishing packages to npm...
...
lerna success published header 1.0.1
...
lerna success published footer 1.0.1
...
Successfully published:
- footer@1.0.1
- header@1.0.1
lerna success published 2 packages
from-package
Альтернативный способ публикации — from-package. Lerna сравнит версии пакетов в репозитории с опубликованными в npm. Пакеты с более новой версией будут опубликованы.
Этот режим не требует предварительного версионирования через lerna version, что удобно для рабочих пространств со своими скриптами версионирования.
lerna publish from-package
Lerna всегда использует npm для публикации пакетов. При использовании менеджера пакетов, отличного от npm, вам всё равно нужно добавить соответствующую конфигурацию публикации в .npmrc, даже если в lerna.json для npmClient указано значение, отличное от npm.