Commitlint
为什么需要 Commitlint,除了在后续的生成 changelog 文件和语义发版中需要提取 commit 中的信息,也利于其他同学分析你提交的代码,所以我们要约定 commit 的规范。 安装 Commitlint @commitlint/cli Commitlint 命令行工具 @commitlint/config-conventional 基于 Angular 的约定规范 npm i @commitlint/config-conventional @commitlint/cli -D 最后将 Commitlint 添加到钩子 npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"' 创建.commitlintrc,并写入配置
{
"extends": ["@commitlint/config-conventional"]
}
注意,这里配置文件名使用的是 .commitlintrc
而不是默认的 .commitlintrc.js
,详见 Eslint 章节
测试钩子是否生效,修改 index.ts,让代码正确
const calc = (a: number, b: number): void => {
console.log(a - b);
};
calc(1024, 28);
提交一条不符合规范的 commit,提交将会失败
git add .
git commit -m 'add eslint and commitlint'
修改为正确的 commit,提交成功!
git commit -m 'ci: add eslint and commitlint'
Angular 规范说明:
- feat:新功能
- fix:修补 BUG
- docs:修改文档,比如 README, CHANGELOG, CONTRIBUTE 等等
- style:不改变代码逻辑 (仅仅修改了空格、格式缩进、逗号等等)
- refactor:重构(既不修复错误也不添加功能)
- perf:优化相关,比如提升性能、体验
- test:增加测试,包括单元测试、集成测试等
- build:构建系统或外部依赖项的更改
- ci:自动化流程配置或脚本修改
- chore:非 src 和 test 的修改,发布版本等
- revert:恢复先前的提交