通过之前对Husky和Lint-staged的了解,我们已经可以在git提交代码时进行代码风格的检测。但是在代码风格保持统一的同时,代码提交信息的规范也同样重要。好的提交规范,可以帮助开发人员快速锁定问题,减少阅读代码的障碍。所以我们在这里引入了Commitlint插件,来对代码提交信息进行校验。

安装

安装时需要同时安装 @commitlint/config-conventional 和 @commitlint/cli

  1. npm add @commitlint/config-conventional @commitlint/cli --dev

配置

  1. "husky": {
  2. "hooks": {
  3. "pre-commit": "npm run lint",
  4. "commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
  5. }
  6. }

基本说明

提交格式(注:冒号后面需要有空格)
  1. <type>: <subject>

type

type是 commit 的提交类型
目前使用的类别有:

  1. "docs", // 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  2. "chore", // 改变构建流程、或者增加依赖库、工具等
  3. "feat", // 新增feature
  4. "fix", // 修复bug
  5. "merge", // 合并
  6. "perf", // 优化相关,比如提升性能、体验
  7. "refactor", // 代码重构,没有加新功能或者修复bug
  8. "revert", // 回滚到上一个版本
  9. "style", // 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  10. "test" // 测试用例,包括单元测试、集成测试等

subject

subject是 commit 的描述,可以做一些配置,如最大长度限制,首字母大写等。

commitlint.config.js配置文件

可以直接创建commitlint.config.js对commitlint进行配置,代码配置介绍:rules

  1. // commitlint.config.js
  2. // 代码git提交信息编写规范
  3. module.exports = {
  4. extends: ["@commitlint/config-conventional"],
  5. rules: {
  6. "type-enum": [
  7. 2,
  8. "always",
  9. [
  10. "docs", // 仅仅修改了文档,比如README, CHANGELOG, CONTRIBUTE等等
  11. "chore", // 改变构建流程、或者增加依赖库、工具等
  12. "feat", // 新增feature
  13. "fix", // 修复bug
  14. "merge", // 合并
  15. "perf", // 优化相关,比如提升性能、体验
  16. "refactor", // 代码重构,没有加新功能或者修复bug
  17. "revert", // 回滚到上一个版本
  18. "style", // 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑
  19. "test" // 测试用例,包括单元测试、集成测试等
  20. ]
  21. ],
  22. },
  23. };

rules内各项配置接收各项配置如:’header-max-length’: [0, ‘always’, 72]
数组中三个值含义分别为

配置项的值 可选参数 含义
第一个值:提示等级 0,1,2 0为disable,1为warning,2为error
第二个值:是否使用 always,never always:使用,never:不使用
第三个值:rules具体配置项 可参考官方文档

错误展示

当代码的提交信息不符合预定的规范时会直接弹出错误,导致提交失败
图片.png

图片.png