Commitlint &husky
一、Commitlint安装
https://github.com/conventional-changelog/commitlint/
1.1、Commitlint 是什么
我们运行 git commmit -m 'xxx'
时,用来检查 xxx
是否满足固定格式的工具。
1.2、安装
npm init
npm install --save-dev @commitlint/config-conventional @commitlint/cli
1.3、生成配置文件commitlint.config.js
当然也可以是 .commitlintrc.js
echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
在当前目录进行测试
echo "build: test"|npx commitlint
二、husky
2.1、husky安装
还要为 git 配置 husky ,对 git 的 commit 操作进行校验。
husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等
npm install husky --save-dev
在 package.json 中引入 husky
// package.json
{
...
...
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
}
这段配置告诉了git hooks,
1、当我们在当前项目中执行 git commit -m '测试提交' 时将触发commit-msg事件钩子并通知husky
2、执行 commitlint -E HUSKY_GIT_PARAMS命令,也就是我们刚开始安装的./node_modules/.bin/commitlint,
3、它将读取commitlint.config.js配置规则并对我们刚刚提交的测试提交这串文字进行校验,若校验不通过,则在终端输出错误,commit终止。
三、提交规范
3.1、提交规范
推荐我们使用 config-conventional 配置去写 commit
提交格式(注意冒号后面有空格)
git commit -m <type>[optional scope]: <description>
type :用于表明我们这次提交的改动类型,是新增了功能?还是修改了测试代码?又或者是更新了文档?
optional scope:一个可选的修改范围。用于标识此次提交主要涉及到代码中哪个模块。
description:一句话描述此次提交的主要内容,做到言简意赅。
3.2、常用的 type 类型
类型 | 描述 |
---|---|
build | 编译相关的修改,例如发布版本、对项目构建或者依赖的改动 |
chore | 其他修改, 比如改变构建流程、或者增加依赖库、工具等 |
docs | 文档修改 |
feat | 新特性、新功能 |
fix | 修改bug |
perf | 优化相关,比如提升性能、体验 |
refactor | 代码重构 |
revert | 回滚到上一个版本 |
ci | 持续集成修改 |
style | 代码格式修改, 注意不是 css 修改 |
test | 测试用例修改 |
- 例子
git commit -m 'fix(account): 修复xxx的bug'
git commit -m 'refactor: 重构整个项目'