Skip to main content

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:恢复先前的提交

参考