Skip to content

13.5 提交规范

13.5.1 commit message规范

commit messageHeaderBodyFooter 组成

Header 部分包括三个字段 type(必需)、scope(可选)和 subject(必需)

  1. type 可选项
描述
feat新增一个功能
fix修复一个 Bug
docs文档变更
style代码格式(不影响功能,例如空格、分号等格式修正)
refactor代码重构
perf改善性能
test测试
build变更项目构建或外部依赖(webpackgulpnpm 等)
ci更改持续集成软件的配置文件和 package 中的 scripts 命令等
chore变更构建流程或辅助工具
revert代码回退
  1. scope
    scope 用于指定本次 commit 影响的范围。scope 依据项目而定,例如在业务项目中可以依据菜单或者功能模块划分,如果是组件库开发,则可以依据组件划分

  2. subject
    subject 是本次 commit 的简洁描述。长度约定在 50 个字符以内,通常遵循以下几个规范:

用动词开头,第一人称现在时表述,例如:change 代替 changed 或 changes 第一个字母小写 结尾不加句号(.)

Body

body 是对本次 commit 的详细描述,可以分成多行。(非必填)
subject 类似,用动词开头,body 应该说明修改的原因和更改前后的行为对比

如果本次提交的代码是突破性的变更或关闭缺陷,则 Footer 必需,否则可以省略。

突破性的变更

当前代码与上一个版本有突破性改变,则 Footer 以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动的理由。

关闭缺陷

如果当前提交是针对特定的 issue,那么可以在 Footer 部分填写需要关闭的单个 issue 或一系列 issues。

13.5.2 commitizen 辅助提交规范

  1. 全局安装
zsh
pnpm install -g commitizen commitlint cz-conventional-changelog-zh
  1. 创建 ~/.czrc文件
.czrc
{ "path": "cz-conventional-changelog-zh" }
  1. 使用 git cz 命令来代替 git commit 命令即可

13.5.3 commitlint 验证提交规范

  1. 全局安装
zsh
pnpm install commitlint @commitlint/config-conventional -g
  1. 使用 husky 验证提交规范
zsh
npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1"
# .husky/commit-msg
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install commitlint --edit
  1. 配置校验规范
js
// commitlint.config.cjs
module.exports = { extends: ["@commitlint/config-conventional"] };