Получите ясность и автоматизируйте создание CHANGELOG и изменение версий.
Если вы просто хотите все установить и запустить, перейдите в раздел TL; DR.
последняя фиксация клянусь
Мы все были там. Будь то плотный график, постоянные исправления или просто создание сообщений с нашим собственным определенным шаблоном; все мы делали плохие сообщения коммитов. К счастью, существует Спецификация обычных коммитов, а вместе с ней и набор мощных инструментов, которые могут нам помочь.
Обеспечение соблюдения стандарта
Чтобы обеспечить соблюдение стандарта каждый раз, когда мы делаем коммит, у нас есть хаски и commitlint. Хаски слушает перехватчики git, и мы будем использовать его для запуска фиксации при вводе сообщения фиксации. Теперь давайте установим пакеты:
npm install --save-dev husky @commitlint/cli @commitlint/config-conventional
После установки этих пакетов вам необходимо создать файл commitlint.config.js в той же папке, что и ваш package.json:
module.exports = { extends: ['@commitlint/config-conventional'] };
И обновите свой package.json:
{ ..., "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } } }
Все готово! Теперь ваши сообщения будут иметь линзы и будут соответствовать стандартной спецификации фиксации. Но какова спецификация? Что ж ... В спецификации сказано, что вы должны соблюдать следующее:
<type>[(optional scope)]: <description> [optional body] [optional footer]
Похоже, это большая работа. Даже больше, когда есть определенные типы, которым нужно следовать. Так что же нам делать?
Мы совершаем их с помощью commitizen
Commitizen - это пакет, который упрощает создание сообщений о фиксации в соответствии с предыдущей спецификацией. Для этого вы должны установить его глобально и настроить свой проект.
npm install --global commitizen # Inside your project commitizen init cz-conventional-changelog --save-dev --save-exact
Теперь внесите изменения, добавьте их и запустите git cz
:
А теперь автоматизация
Мы добавили инструменты для обеспечения и упрощения сообщений о фиксации в соответствии со стандартной спецификацией фиксации. В рамках проекта мы получили стандартные сообщения, которые могут читать не только люди, но и машины. Да, машины. Следование этим стандартам позволило машинам понять шаблон и, таким образом, автоматически обновлять версию наших пакетов и создавать журналы изменений.
Перенос версий и ИЗМЕНЕНИЕ
Для выполнения обоих действий нам нужен только один пакет standard-version. Этот пакет будет:
1) анализировать ваши коммиты с момента последнего выпуска (тега)
2) повышать версию вашего package.json
3) генерировать или обновлять файл CHANGELOG.md
4) Создайте сообщение фиксации
5) Создайте новый тег
Итак, давайте использовать это:
npm install --save-dev standard-version
Обновите свой package.json:
{ ..., "scripts": { "release": "standard-version" } }
А теперь нужно просто запустить npm run release
.
В качестве альтернативы, если вы хотите просто создать файл журнала изменений, я бы рекомендовал традиционный-changelog-cli.
TL;DR
Установите и настройте свои зависимости
# Install global packages npm install --global commitizen # Install project packages npm install --save-dev standard-version husky @commitlint/config-conventional @commitlint/cli # Configure commitizen commitizen init cz-conventional-changelog --save-dev --save-exact
Создайте файл commitlint.config.js в корневой папке
module.exports = { extends: ['@commitlint/config-conventional'] };
Обновить package.json
{ ..., "scripts": { "release": "standard-version" }, ..., "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } } }
Обновите свой проект, сделайте коммит и будьте счастливы
# Add your changes git add --all # Commit with Commitizen git cz # Bump your version and generate a new CHANGELOG npm run release
Что дальше?
Получив удобочитаемость и автоматизацию повседневных болезненных задач, вы можете создать свой собственный стандарт на основе стандартной спецификации фиксации. Я, например, создал cz-simple-changelog для тех, кому сложно следовать всем этим типам в начале. Семейство инструментов традиционного журнала изменений позволяет и упростить вам создание собственной версии, если вы хотите.
Надеюсь, этот пост вам помог. Во всяком случае, поделитесь информацией, которая могла бы улучшить его и сделать лучше для других!