В идеальном мире исходный код библиотеки NPM находится в синхронизации с версиями, опубликованными в реестре NPM.
Проблема Состоит в том, что последние версии пакета, опубликованные NPM, отсутствуют за их кодом. Это приводит к
- Разочарованные участники , чьи позывные запросы были объединены, а теперь ждать, чтобы использовать новую версию, которая включает в себя свои исправления или функции
- Запутанные пользователи который работает в ошибку, которая помечена как разрешена на GitHub
- Подчеркнул сопровождающие которые дают давление на такие комментарии, как «когда это исправление будет выпущено?» по закрытым вопросам и потяжным запросам.
Решение : Автоматизация. Введите семантический релиз
В двух словах семантический релиз
Полагается на конверсии по сообщениям по сообщениям, чтобы рассчитать и публиковать новую версию вашего пакета. По умолчанию, 3 конвенция
-
Исправить: ...
Префикс в субъекте совершения: триггеры версии релиз Fix, например1.2.3
→1.2.4
-
feat: ...
Префикс в субъекте совершения: триггеры версии функции, например1.2.3
→1.3.0
-
Преодоление изменений:
В Commit Body: триггеры разбития версии, например,1.2.3
→2.0.0
Это все, что вам нужно учиться.
Основываясь на этих конвенциях, новые версии постоянно публикуются в NPM. Ваш код на GitHub и опубликованные версии на НПМ никогда не будет снова вне синхронизации.
Но семантический выпуск делает гораздо больше, чем это:
- Он создает релизы GitHub для отражения версий, опубликованных в NPM, и добавляет изменяемые файловые файлы на основе приведенных выше конвенций и добавляет их в релизы GitHUB.
- Это уведомлеет о комментариях с комментариями привлечения запросов и разрешенных вопросам, что новая версия была выпущена
- Это позволяет вам контролировать в одном месте, который оба могут объединить изменения в
Мастер
Филиал и публикация новых версий в НПМ.
Настройка с использованием действий GitHub
семантический релиз
Поддерживает множество поставщиков CI, GIT Hosts и реестров пакетов. Для этого примеру я буду использовать действия GitHub для публикации на NPM.
Установите семантический релиз
npm install --save-dev semantic-release
Если это существующий проект, обязательно создать тег GIT, который соответствует последней версии в регистр NPM, используя V
приставка. Например, если последняя версия, опубликованная NPM, является 2.0.4
Создать v2.0.4
тег и подтолкните его к вашему репозиторию.
git tag v2.0.4 git push --tags
Не нужно создавать тег для новых пакетов, которые еще не были опубликованы.
Далее замените версию в свой package.json
Файл с «0.0.0-разработкой». Версия будет обновляться автоматически путем семантического выпуска. Вам больше не нужно беспокоиться об этом.
Далее создайте токен NPM для вашей учетной записи в https://www.npmjs.com/settings/[your Имя пользователя]/Токены
с Читать и опубликовать
параметр. Скопируйте этот токен и храните его В секретах вашего репозитория используя имя NPM_Token
Отказ
Наконец, создать .Github/Workflows/Release.yml
Файл для запуска семантического выпуска каждый раз, когда изменение нажата в ваш репозиторий Мастер
ветвь.
name: Release on: push: branches: - master jobs: release: name: release runs-on: ubuntu-latest steps: # check out repository code and setup node - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: "12.x" # install dependencies and run semantic-release - run: npm ci - run: npx semantic-release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Вот и все. В следующий раз, когда вы объединяете запрос на потянув с помощью сообщений, указанные после упомянутых выше конвенций, семантик-релиз создаст выбросы NPM и GitHUB, а также комментарии к запросу на потяжете и связанные вопросы.
Закрытие слов
Вы можете увидеть семантический релиз
В действии по всему моим проектам на Github. Я обычно делаю несколько релизов каждый рабочий день. Я даже больше не думаю об этом. Это освобождает мое время и мысли, чтобы сосредоточиться на коде, а не по дому.
И, наконец, наконечник: автоматизация выпусков идет рука об руку с автоматическим обновлением зависимости. Такие услуги, как Greenkeeper Даже следуйте необходимым конвенциям по совершенствованию, когда они отправляют свои запросы на тягу. Объединение PRS — это все, что нужно, чтобы выпустить новую версию. Я настоятельно рекомендую использовать их обоих!
Оригинал: «https://dev.to/gr2m/automate-npm-releases-using-semantic-release-510c»