前端规范化: 使用commitlint:校验你的 git message

2,173 阅读1分钟

Commitlint: 校验你的 message

配置 commitlint

commitlint 搭配 husky 的 commit message 钩子后,每次提交 git 版本信息的时候,会根据配置的规则进行校验,若不符合规则会 commit 失败,并提示相应信息。

npm install --save-dev @commitlint/{config-conventional,cli}
npm install --save-dev @commitlint/config-conventional @commitlint/cli
//项目根目录commitlint.config.js
echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js

修改配置文件

说明:
  • feature:新功能
  • update:更新某功能
  • fixbug:修补某功能的bug
  • refactor:重构某个功能
  • optimize: 优化构建工具或运行时性能
  • style:仅样式改动
  • docs:仅文档新增/改动
  • chore:构建过程或辅助工具(新增插件)的变动
  • rule配置说明::rule由name和配置数组组成,如:'name:[0, 'always', 72]',数组中第一位为level,可选0,1,2,0为 disable,1为warning,2为error,第二位为应用与否,可选always|never,第三位该rule的值。具体配置例子如下:
  • scope:一个可选的修改范围。用于标识此次提交主要涉及到代码中哪个模块。
  • description:一句话描述此次提交的主要内容,做到言简意赅。
示例:
  <type>(<scope>): <subject>
  body?
  footer?
  git commit -m 'feat(xxx模块): 增加 xxx 功能'
  git commit -m 'bug(xxx模块/xxx文件): 修复 xxx 功能'
commitlint.config.js
module.exports = {
  extends: ["@commitlint/config-conventional"],
  rules: {
    "type-enum": [2, "always", ["feature", "update", "fixbug", "refactor", "optimize", "style", "docs", "chore"]],
    "type-case": [0],
    "type-empty": [2, "never"], //type必填
    "scope-empty": [2, "never"], //scope必填
    "scope-case": [0],
    "subject-full-stop": [0, "never"],
    "subject-case": [0, "never"],
    "header-max-length": [0, "always", 72]
  }
};