为什么做 Git 提交规范?
在开发项目时,同一个团队的人员提交的日志各不一样,各有特色,有时候也过于简陋,甚至都不知道此次提交到底做了什么,导致非常不便于代码审查和项目管理。为了改变这种现象,我们可以借助工具对 Git 日志进行规范化约束,包括自动化,模板化以及强制校验。
安装与配置
yarn add -D @commitlint/cli @commitlint/config-conventional commitizen cz-conventional-changelog husky standard-version
// package.json添加
"scripts": {
"commit": "git-cz",
"release": "standard-version",
"prepare": "husky install"
},
"config": {
"commitizen": {
"path": "node_modules/cz-conventional-changelog"
}
},
// 根目录添加配置文件commitlint.config.js
module.exports = {
extends: ["@commitlint/config-conventional"],
};
//依次执行
npm run prepare
npx husky add .husky/pre-commit "npm test"
npx husky add .husky/commit-msg "npx commitlint --edit $1"
上面两个脚本执行后会在.husky 内创建两个文件
库介绍
- commitizen:Git 日志提交约束工具
- cz-conventional-changelog:提交日志规范模板
- @commitlint/cli:提交日志的校验工具,校验是否符合提交约束
- @commitlint/config-conventional:校验工具的配置
- husky:配合 Git hook,对所有的工具 Git 提交校验规范约束
- standard-version:根据提交日志,自动生成更新日志文档
运行测试
//提交
yarn commit
//生成日志
yarn release
提交类型说明
- feat: 创建新特性
- fix: 修复bug
- docs: 更新文档
- style: 不影响代码含义的更改(空白、格式、缺少分号等)
- refactor: 代码重构不影响功能(既不修复bug也不添加特性)
- perf: 改进性能的代码更改
- test: 添加缺失的测试或纠正现有的测试
- build: 影响构建系统或外部依赖项的更改(示例范围:gulp、broccoli、npm)
- ci: 对CI配置文件和脚本的更改(示例范围:Travis, Circle, BrowserStack, SauceLabs)
- chore: 其他不修改src或测试文件的更改
- revert: 回滚上一次提交
参考资料
公司内部资料文档