Я провел небольшое исследование и нашел несколько библиотек, которые можно использовать для достижения моей цели. Для этого я выбрал generate-changelog, потому что его довольно легко настроить и использовать.
Общая идея заключается в том, что вам нужно будет использовать определенные ключевые слова в ваших git-коммитах, которые затем будут проанализированы и добавлены к CHANGELOG.md файл и зафиксирован перед обновлением версии (скрипт автоматизирует это).
- Установить генератор ChangeLog
Установите эту утилиту как зависимость разработчика, выполнив эту команду:
$ yarn add -D generate-changelog
- Настройте скрипты
Добавьте следующие рекомендуемые скрипты в объект scripts в вашем файле package.json:
{
"scripts": {
"release:major": "changelog -M && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && yarn version --major && git push origin && git push origin --tags",
"release:minor": "changelog -m && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && yarn version --minor && git push origin && git push origin --tags",
"release:patch": "changelog -p && git add CHANGELOG.md && git commit -m 'updated CHANGELOG.md' && yarn version --patch && git push origin && git push origin --tags",
}
}
- Сделайте несколько коммитов с ключевыми словами
Используйте этот шаблон:
type(category): description [flags]
Например, после того, как вы установили зависимость generate-changelog, вы могли бы сделать:
$ git add .
$ git commit -m "feat(deps): added `generate-changelog` dev dependency"
Примечание: Поддерживаемые тип
, категория
и флаги
перечислены в разделе “Создание журнала изменений”.
- Запустите скрипт
Как только вы закончите всю работу, которую необходимо выполнить для конкретной версии, запустите один из скриптов, которые мы добавили ранее, чтобы сгенерировать CHANGELOG.md файл, обновите версию и перейдите к источнику.
$ yarn release:major
Вы сделали это! Проверьте сейчас содержимое вашего CHANGELOG.md файл, и вы увидите, что ваша фиксация была добавлена. В следующий раз, когда вы запустите один из сценариев выпуска, коммиты будут автоматически добавлены в начало файла. Удивительно, не правда ли?