предисловие
Был ли у вас когда-нибудь такой опыт:
- Пришло время уйти с работы, отправить код и быстро уйти, (git add .) (git commit -m "pull it") (git push);
- Модифицированные вещи немного сложны, я не знаю, что писать в информации о представлении, и это еще одна пощечина, поэтому она представлена;
- Отправил на некоторое время, искал две строчки слезы, хотел найти модификацию на тот момент и обнаружил, что не могу запустить. . . .
Есть инструменты для любых нужд.Для этих задач спецификации, используемые командой Angular, сейчас наиболее часто используются в отрасли, редактор vim появляется, когда git commit используется для редактирования информации о представлении типа шаблона.Основной формат составляет:
<type>(<scope>):<subject>
<BlLANK_LINE>
<?body>
<BLANK_LINE>
<?footer>
- Первая строка обязательна: в основном [Тип представления (Область воздействия): Краткое описание]
- тело подробное описание, я никогда не использовал его лично
- Нижний колонтитул был критическим изменением или закрытой проблемой
Установить
Личные привычки направлены на настройки проекта, поэтому устанавливайте прямо в проекте вместо глобальной конфигурации, принцип тот же
$ npm i -D commitizen cz-conventional-changelog
$ npm i -g commitizen cz-conventional-changelog
### package.json
"config":{
"commitizen":{
"path":"node_modules/cz-conventional-changelog"
}
}
Здесь, если вы устанавливаете в глобальном режиме, вам нужно создать файл .czrc в глобальном корневом каталоге, а затем ввести содержимое в файл{“path”:"cz-conventional-changelog"}
Или введите следующую команду:
echo '{"path":"cz-conventional-changelog"}' > ~/.czrc
Если вы используете глобальную установку, то теперь вы переходите в каталог проекта и используетеgit cz
Вы можете увидеть всплывающее содержимое редактора vim с помощью команды.Если это установка на уровне проекта, вы можете настроить текущую команду в команде сценариев в package.json (вводится файл конфигурации определенного типа типа)
"scripts":{
commit:"git-cz"
}
После выбора типа фиксации вы сможете продолжить выбор области действия кода.
После выбора сферы влияния вам будет предложено заполнить краткую информацию, подробную информацию, информацию нижнего колонтитула, а также следует ли подавать (не обрисовывать по порядку, а дописать ключ ввода к следующему шагу)
проверка фиксации
После вышеописанной операции, по сути, для сознательного человека достаточно, но ограничения нет, а значит свобода, а свобода означает, что кто-то переходит черту. так как я могу дать эти свободы?Добавить некоторые ограничения?
$ npm i -D @commitlint/config-conventional @commitlint/cli
Создайте файл конфигурации в каталоге проектаcommitlint.config.js
или .commitlintrc.js
module.exports = {
extents:[
"@commitlint/config-conventional"
],
rules:{
'body-leading-blank': [1, 'always'],
'footer-leading-blank': [1, 'always'],
'header-max-length': [2, 'always', 72],
'scope-case': [2, 'always', 'lower-case'],
'subject-case': [
2,
'never',
['sentence-case', 'start-case', 'pascal-case', 'upper-case']
],
'subject-empty': [2, 'never'],
'subject-full-stop': [2, 'never', '.'],
'type-case': [2, 'always', 'lower-case'],
'type-empty': [2, 'never'],
'type-enum': [
2,
'always',
[
'build',
'chore',
'ci',
'docs',
'feat',
'fix',
'improvement',
'perf',
'refactor',
'revert',
'style',
'test'
]
]
}
}
вы можете использоватьОфициальный сайтспособ проверить, соответствует ли ваша фиксация спецификации
Хаски лимит
Проверяйте сообщения коммитов в сочетании с git hooks, которые не позволяют вам совершать коммиты, когда ваши коммиты не соответствуют спецификации.
$ npm i -D husky
package.json
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
Таким образом, когда вы не соответствуете спецификации, вы не сможете отправить (у меня здесь пустая область, и я отказываюсь от отправки)
Пользовательская спецификация коммита
Конечно, если вы хотите определить спецификацию отправки самостоятельно, вы должны сначала загрузить пакет ограничений пользовательской спецификации, чтобы заменить спецификацию, используемую командой Angular.
$ npm i -D commitlint-config-cz cz-customizable
###并且在项目根目录创建.cz-config.js
commitlint.config.js (rules — это мои пользовательские правила, здесь используются одновременно две спецификации, вам может понадобиться только cz)
module.exports = {
extends: [
'@commitlint/config-conventional',
'cz'
],
rules:{
// Header
'header-max-length': [2, 'always', 200],
// <type>枚举
'type-enum': [2, 'always', [
'init',
'feat',
'fix',
'ui',
'refactor',
'replace',
'deploy',
'docs',
'test',
'chore',
'style',
'revert',
'add',
'minus',
'del'
]],
// <type> 不能为空
'type-empty': [2, 'never'],
// <type> 格式 小写
'type-case': [2, 'always', 'lower-case'],
// <scope> 不能为空
'scope-empty': [2, 'never'],
// <scope> 格式 小写
'scope-case': [2, 'always', 'lower-case'],
// <subject> 不能为空
'subject-empty': [2, 'never'],
// <subject> 以.为结束标志
'subject-full-stop': [2, 'never', '.'],
// <subject> 格式
// 可选值
// 'lower-case' 小写 lowercase
// 'upper-case' 大写 UPPERCASE
// 'camel-case' 小驼峰 camelCase
// 'kebab-case' 短横线 kebab-case
// 'pascal-case' 大驼峰 PascalCase
// 'sentence-case' 首字母大写 Sentence case
// 'snake-case' 下划线 snake_case
// 'start-case' 所有首字母大写 start-case
'subject-case': [2, 'never', []],
// <body> 以空行开头
'body-leading-blank': [1, 'always'],
// <footer> 以空行开头
'footer-leading-blank': [1, 'always']
}}
package.json
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
}
},
.cz-config.js (это моя пользовательская конфигурация)
module.exports = {
types: [
{ value: 'init', name: 'init: 初始提交' },
{ value: 'feat', name: 'feat: 增加新功能' },
{ value: 'fix', name: 'fix: 修复bug' },
{ value: 'ui', name: 'ui: 更新UI' },
{ value: 'refactor', name: 'refactor: 代码重构' },
{ value: 'release', name: 'release: 发布' },
{ value: 'deploy', name: 'deploy: 部署' },
{ value: 'docs', name: 'docs: 修改文档' },
{ value: 'test', name: 'test: 增删测试' },
{ value: 'chore', name: 'chore: 更改配置文件' },
{ value: 'style', name: 'style: 样式修改不影响逻辑' },
{ value: 'revert', name: 'revert: 版本回退' },
{ value: 'add', name: 'add: 添加依赖' },
{ value: 'minus', name: 'minus: 版本回退' },
{ value: 'del', name: 'del: 删除代码/文件' }
],
scopes: [],
messages: {
type: '选择更改类型:\n',
scope: '更改的范围:\n',
// 如果allowcustomscopes为true,则使用
// customScope: 'Denote the SCOPE of this change:',
subject: '简短描述:\n',
body: '详细描述. 使用"|"换行:\n',
breaking: 'Breaking Changes列表:\n',
footer: '关闭的issues列表. E.g.: #31, #34:\n',
confirmCommit: '确认提交?'
},
allowCustomScopes: true,
allowBreakingChanges: ["feat", "fix"]};
Опираясь на китаизацию веб-статьи.cz-config.js
Забыл сохранить конкретный адрес, найду позже
'use strict';
module.exports = {
types: [
{value: '✨特性', name: '特性: 一个新的特性'},
{value: '🐛修复', name: '修复: 修复一个Bug'},
{value: '📝文档', name: '文档: 变更的只有文档'},
{value: '💄格式', name: '格式: 空格, 分号等格式修复'},
{value: '♻️重构', name: '重构: 代码重构,注意和特性、修复区分开'},
{value: '⚡️性能', name: '性能: 提升性能'},
{value: '✅测试', name: '测试: 添加一个测试'},
{value: '🔧工具', name: '工具: 开发工具变动(构建、脚手架工具等)'},
{value: '⏪回滚', name: '回滚: 代码回退'} ],
scopes: [
{name: '模块1'},
{name: '模块2'},
{name: '模块3'},
{name: '模块4'}
],
// it needs to match the value for field type. Eg.: 'fix'
/* scopeOverrides: {
fix: [
{name: 'merge'},
{name: 'style'},
{name: 'e2eTest'},
{name: 'unitTest'}
]
}, */
// override the messages, defaults are as follows
messages: {
type: '选择一种你的提交类型:',
scope: '选择一个scope (可选):',
// used if allowCustomScopes is true
customScope: 'Denote the SCOPE of this change:',
subject: '短说明:\n',
body: '长说明,使用"|"换行(可选):\n',
breaking: '非兼容性说明 (可选):\n',
footer: '关联关闭的issue,例如:#31, #34(可选):\n',
confirmCommit: '确定提交说明?' },
allowCustomScopes: true,
allowBreakingChanges: ['特性', '修复'],
// limit subject length
subjectLimit: 100};
### commitlint.config.js
module.exports = {
extends: [
'cz'
]
}
### package.json
"config": {
"commitizen": {
"path": "node_modules/cz-customizable"
}
},
Наконец: если вы думаете, что это поможет вам, оставьте след! Если вы считаете, что в статье что-то не так, оставьте комментарий!