1. Быстрая настройка и процесс выпуска версии
Эта глава в основном представляет собой краткое изложение следующего содержания для использования в будущем.Если вам нужно узнать подробности, начните чтение с главы 2.
1.1 Установка пакета зависимостей
# husky 包安装
npm install husky --save-dev
# commitlint 所需包安装
npm install @commitlint/config-angular @commitlint/cli --save-dev
# commitizen 包安装
npm install commitizen --save-dev
# standard-version 包安装
npm install standard-version --save-dev
1.2 Настройте commitlint и commitizen
# 生成 commitlint 配置文件
echo "module.exports = {extends: ['@commitlint/config-angular']};" > commitlint.config.js
# commitizen 初始化
npx commitizen init cz-conventional-changelog --save-dev --save-exact
1.3 Обновление package.json
Описание скрипта:
- выпуск: Настройте версию, которая будет выпущена, например:
npm run release -- 1.0.0- выпуск: 100: выполнить скрипт, затем, если текущая версия 1.0.0, версия будет обновлена до 2.0.0.
- выпуск: 010: выполнить скрипт, затем, если текущая версия 1.0.0, версия будет обновлена до 1.1.0
- выпуск: 001: выполнить скрипт, затем, если текущая версия 1.0.0, версия будет обновлена до 1.0.1.
{
"scripts": {
+ "commit": "git-cz",
+ "release": "standard-version --release-as",
+ "release:100": "npm run release -- major",
+ "release:010": "npm run release -- minor",
+ "release:001": "npm run release -- patch",
},
+ "husky": {
+ "hooks": {
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
+ }
+ }
}
1.4 метод фиксации
- Глобальная ситуация может быть использована для установки commitizen
git czилиnpm run commitотправить код - Доступно, если commitizen не установлен глобально
npm run commitотправить код
Процесс выпуска версии 1.5
# 1. 切换到指定分支
git checkout master
# 2. 更新代码
git pull origin master
# 3. 版本发布: 生成 CHANGELOG.md 并创建 tag
npm run release -- 1.0.0
# 4. 更新 tag 至远程分支
git push --follow-tags origin master
1.6 Добавление релизов в удаленные репозитории
2. Используйте husky + commitlint для проверки информации о коммите
2.1 Введение в пакет npm хаски
huskyОсновная функция — добавить в gitgit-хуки, что позволяет нам запускать пользовательские сценарии (скрипты npm), когда в git происходят какие-то важные действия, например, мы можем выполнять определенные пользовательские сценарии для модульного тестирования кода перед git push или выполнять eslint перед git commit Verification, конечно же, это статья в основном знакомит с тем, как использовать husky для добавления хука commit-msg в git и проверки коммита.
- пакет npm хаски установить
npm install husky --save-dev
- Обновить package.json
- Добавьте хук pre-commit, который будет выводиться в терминал перед git commit
我要提交代码啦 - Добавьте хук commit-msg, когда git проверит коммит, он выведет все параметры git и ввод в терминал, husky вернет параметры git и ввод через переменную среды HUSKY_GIT_PARAMS HUSKY_GIT_STDIN будет хриплым
- Добавьте хук pre-push, который будет выводиться в терминал перед git push
提交代码前需要先进行单元测试и выполнитьnpm test
{
+ "husky": {
+ "hooks": {
+ "pre-commit": "echo 我要提交代码啦",
+ "commit-msg": "echo $HUSKY_GIT_PARAMS $HUSKY_GIT_STDIN",
+ "pre-push": "echo 提交代码前需要先进行单元测试 && npn test"
+ }
+ }
}
2.2 Введение в коммитлинт пакета npm
commitlint используется для проверки того, соответствует ли ваше сообщение коммита предписанному формату коммита.Обычно он используется с пакетом husky для проверки формата информации коммита git.Если информация коммита не соответствует предписанному формату, будет выдана ошибка брошенный.
2.2.1 формат коммита по умолчанию
commitlintФормат по умолчанию:
# 注意:冒号前面是需要一个空格的, 带 ? 表示非必填信息
type(scope?): subject
body?
footer?
- область действия относится к области фиксации (какие модули были изменены)
- тема относится к краткому описанию коммита
- body относится к содержимому тела коммита (длинное описание)
- нижний колонтитул относится к фиксации информации нижнего колонтитула
- тип относится к текущему типу коммита.Как правило, существуют следующие необязательные типы:
| Типы | описывать |
|---|---|
| build | Основная цель состоит в том, чтобы изменить представление системы сборки проекта (такой как глюк, веб-пакет, конфигурация свертывания и т. д.) |
| ci | Основная цель — изменить коммиты, в которых проект продолжает процесс интеграции (например, Travis, Jenkins, GitLab CI, Circle и т. д.). |
| docs | Обновление документации |
| feat | новые особенности |
| merge | Объединить ветку ? |
| fix | Исправлена ошибка |
| perf | Производительность, оптимизация опыта |
| refactor | Рефакторинг кода (ни новых функций, ни исправлений ошибок) |
| style | Модификации кода, не влияющие на логику программы (изменение пробельных символов, форматирование отступов, заполнение отсутствующих точек с запятой и т. д. без изменения логики кода) |
| test | Добавьте новые тестовые случаи или обновите существующие тесты |
| revert | откатить предыдущий коммит |
| chore | Другие типы, не относящиеся к вышеперечисленным типам |
2.2.2 в сочетании с пакетом Husky для использования
- Установить зависимости
npm install --save-dev @commitlint/config-angular @commitlint/cli
- Измените package.json: используйте commitlint для настройки скрипта перехватчика commit-msg в конфигурации Husky.
{
"husky": {
"hooks": {
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
- Добавить файл конфигурации commitlint
Добавьте файл commitlint.config.js в проект и выполните простую настройку для commitlint.
Инструкции по настройке:Правило состоит из значения ключа и массива конфигурации, например: 'имя: [0, 'всегда', 72]', первый бит в массиве - уровень (level), необязательные 0, 1, 2, 0 disable (отключено), 1 — предупреждение, 2 — ошибка, второе — применяется ли правило, опционально всегда | никогда, а третье — допустимое значение правила.
module.exports = {
// 继承默认配置
extends: [
"@commitlint/config-angular"
],
// 自定义规则
rules: {
'type-enum': [2, 'always', [
'upd',
'feat',
'fix',
'refactor',
'docs',
'chore',
'style',
'revert',
]],
'header-max-length': [0, 'always', 72]
}
};
- Ниже приведены ситуации проверки нескольких различных сведений о коммите.
3. Используйте commitize для предоставления интерактивного интерфейса при отправке кода
Выше мы добавили проверку к информации о коммите git, но есть недостаток в том, что нам нужно вручную редактировать информацию о коммите, что доставляет много хлопот.В настоящее время мы можем ввести commitizen.При использовании commitizen для отправки наш код, он будет в терминале дает интерактивный интерфейс, который подскажет нам все поля, которые необходимо заполнить при отправке.Нам нужно только заполнить соответствующую информацию в интерактивном интерфейсе по порядку, и коммит будет автоматически помогают нам синтезировать информацию и инициировать фиксацию.
3.1 Настройка фиксации
- Установите инструмент commitizen cli
npm install commitizen -g
- Инициализировать текущий проект
# 下面面的命令为你做了下面几件事:
## 安装 cz-conventional-changelog npm 模块
## 将添加 config.commitizen 配置
commitizen init cz-conventional-changelog --save-dev --save-exact
- Используйте git cz вместо git commit для фиксации кода
3.2 Замена git commit скриптами npm
На самом деле, конфигурация приятелей может быть в основном завершена на данный момент, но если он сконфигурирован только здесь, пользователю необходимо установить CZ, в глобальном масштабе при использовании GIT CZ для отправки кода, в противном случае будет сообщена ошибка. Установка приявок по проекту и Добавьте скрипт NPM, пользователи могут отправлять код через сценарий NPM без установленного глобально.
- Добавить зависимость фиксации
npm install commitizen -D
- Добавьте npm-скрипты
"scripts": {
+ "commit": "git-cz"
},
- Если пользователь не устанавливает commitizen глобально, это можно сделать с помощью
npm run commitКоммитить код вместо git commit
4. Автоматически создавать журнал изменений и версию выпуска
В случае использования вышеуказанной спецификации коммита журнал изменений может быть автоматически сгенерирован через стандартную версию, а информация о версии проекта может быть обновлена для добавления тега git.Журнал изменений будет включать все коммиты, тип которых feat и исправить.
4.1 установка и настройка стандартной версии
- установить стандартную версию
npm i --save-dev standard-version
- Настроить команды скрипта npm
{
"scripts": {
+ "release": "standard-version"
}
}
4.2 Процесс выпуска версии
- переключиться на основную ветку
git checkout master
- вытащить удаленную ветку
git pull origin master
- Получить удаленную информацию
git fetch origin --prune
- Автоматически создавать список изменений и обновлять версию до 1.0.0
# 下面面的命令为你做了下面几件事:
## 修改 package.json 中的版本号
## 使用 legacy -changelog 更新 CHANGELOG.md
## 提交 package.json 和 CHANGELOG.md
## 添加 tag
npm run release -- --release-as 1.0.0
- Обновите локальный тег до удаленной ветки
git push --follow-tags origin master