@sumdoo/commitlint-config
用法
安装
pnpm add @commitlint/cli
pnpm add @sumdoo/commitlint-config
pnpm add husky
配置 commitlint-config
// commitlint.config.js
module.exports = {
extends: ['@sumdoo/commitlint-config'],
}
配置 git hook
// 挂载钩子
npx husky install
// 增加提交前代码校验
npx husky add .husky/pre-commit 'pnpm lint'
// 增加提交信息校验钩子
npx husky add .husky/commit-msg 'npx commitlint --edit "$1"'
配置 package.json
{
"scripts": {
// 仅允许使用 pnpm 安装
"preinstall": "npx only-allow pnpm",
// 使用 pnpm install 时,挂载 git 钩子
"prepare": "husky install",
}
}
提交约定
提交约定允许为 git
历史添加更多语义含义借助这些附加信息,工具可以为项目版本获取有用的人类可读信息
例如:
- 自动化、丰富的变更日志
- 自动版本升级
- 筛选要运行的测试工具
最常见的提交约定遵循这种模式:
type(scope?): subject
body?
footer?
type
必填项,用于说明本次提交做出哪种类型的修改,必须是以下任意一值:
- fix (一个新功能)
- feat (错误修复)
- ui (页面样式变更)
- docs (仅文档更改)
- style (不影响代码含义的更改:空格、格式、缺少分号等)
- refactor (重构,既不修复错误也不添加功能的代码更改)
- perf (提高性能的代码更改)
- test (添加缺失或纠正现有测试)
- revert (撤销上一次提交)
- chore (对构建过程或辅助工具和库的更改,例如文档生成)
scope
可选项,用于说明本次提交中影响的范围(feat、fix、ui、refactor、perf 推荐全局范围使用 global
)
建议一次提交中仅包含一处修改,阅读提交信息时会更详细
多个范围,当前的分隔符选项有:
- “/”
- “\”
- “,”
subject
必填项,用于简要地描述本次提交中所做出的修改。而且需要满足格式:
- 如果用英文描述,则英文单词只能是一般现在时或者祈使语气
- 首字母不能大写
- 不能以.作为结尾
body
选填项,相对于上述的subject,body用于更加详细的描述本次提交中所做出的修改。其中需要包括本次修改的动机以及对比于修改之前的改进之处。
footer
选填项,主要包括以下两点:
-
break changes:任何关于与上个版本不兼容的更改(breaking change)的信息,例如版本升级、数据字段更改、接口参数变化等。如果存在breaking change,则需要以 BREAKING CHANGE: 开头后接空格或者两行新行后,写清楚更改的内容。
-
affect issues:指明本次修改是否针对某次issues。