Синхронизация номеров версий в файлах package.json проекта угловой библиотеки - PullRequest
15 голосов
/ 07 июня 2019

При создании приложения Angular Library существует ли автоматический способ синхронизировать версии корневого уровня package.json и файла package.json библиотечного приложения (например, в projects/my-library) при использовании команд npm version?

Когда я использую команду, она только увеличивает корневой уровень package.json, существует ли специальная команда или любой другой способ распространения номера версии в файле библиотеки package.json?

Я видел некоторые решения, такие как запуск сценария после ng build для чтения номера версии корневого уровня package.json и записи его в библиотеку, но я не уверен, что это лучший подход.

Кто-нибудь еще сталкивался с этим при создании библиотек на Angular и если да, то как вы с этим справились?

Спасибо

1 Ответ

6 голосов
/ 14 июня 2019

Я видел, как люди задают тот же вопрос Всавкину (чувак Nrwl / Nx), и его ответ был довольно сложным Подмодульный подход .

Хотя этот рабочий процесс являетсянемного сложный, он позволяет разделяемым версиям разделяемых библиотек сохранять их в том же родительском git-repo.


Более простая альтернатива, как вы уже упоминали, хранить все библиотеки в одном хранилище.та же версия, что и для root package.json - аналогично тому, как Angular monorepo одновременно выпускает свои версии всех пакетов Angular.

Это можно легко сделать в узле или в bash / shell с помощьюнемного больше сценариев.

Вот пример с примерами узлов, bash & shell, как извлечь версию из корневого пакета. json .


Toна самом деле поднять версии пакетов вот простой подход: установите этот пакет npm (хороший CLI для редактирования файлов json) и прочитайте раздел Редактирование на месте .Теперь у вас должны быть все необходимые инструменты!


Вот пример сценария bash с использованием узла:

cd libs/my-library && json -I -f package.json this.version=$(node -pe \"JSON.stringify(require('../../package.json').version)\")
...