Skip to content

规范 commit

对于我们的 commit 信息,也是有统一规范的,不能随便写,要让每个人都按照统一的标准来执行,我们可以利用 commitlint 来实现。

安装

bash
pnpm add @commitlint/cli @commitlint/config-conventional -D

使用

  1. 根目录新建 commitlint.config.cjs,然后添加下面代码:
js
/**
 * "off"或者0:关闭规则
 * "warn"或1:开启规则抛出警告
 * "error"或2:开启规则抛出错误
 */
module.exports = {
	// 继承的规则
	extends: ['@commitlint/config-conventional'],
	// @see: https://commitlint.js.org/#/reference-rules
	rules: {
		'type-enum': [
			2, // 当前验证的错误级别
			'always', // 在什么情况下进行验证,always表示一直进行验证
			[
				'feat', // 新增功能、页面
				'update', // 更新:普通更新
				'fix', // 修补bug
				'docs', // 修改文档、注释
				'style', // 格式:不影响代码运行的变动、空格、格式化等等
				'refactor', // 代码重构,未新增任何功能和修复任何bug
				'perf', // 优化:提升性能、用户体验等
				'test', // 测试用例:包括单元测试、集成测试
				'chore', // 其他不修改src或测试文件的更改
				'revert', // 回滚到上一个版本
				'ci', // 对CI/CD配置文件和脚本的更改
				'build', // 改变构建流程,新增依赖库、工具等(例如:修改webpack)
			],
		],
		'type-case': [0],
		'type-empty': [0],
		'scope-empty': [0],
		'scope-case': [0],
		'subject-full-stop': [0, 'never'],
		'subject-case': [0, 'never'],
		'header-max-length': [0, 'always', 108], // header上最大108字符
	},
};
  1. 在 package.json 中配置自定义命令
json
"scripts": {
    "commitlint": "commitlint --config commitlint.config.cjs -e -V"
},
  1. 在 husky 添加 commit-msg 钩子
bash
npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'

示例

  • 之后 commit 信息必须带有前缀:
wiki
'feat', // 新增功能、页面
'update', // 更新:普通更新
'fix', // 修补bug
'docs', // 修改文档、注释
'style', // 格式:不影响代码运行的变动、空格、格式化等等
'refactor', // 代码重构,未新增任何功能和修复任何bug
'perf', // 优化:提升性能、用户体验等
'test', // 测试用例:包括单元测试、集成测试
'chore', // 其他不修改src或测试文件的更改
'revert', // 回滚到上一个版本
'ci', // 对CI/CD配置文件和脚本的更改
'build', // 改变构建流程,新增依赖库、工具等(例如:修改webpack)
  • 注意中间的空格
bash
git commit -m 'feat: 新增页面'
git commit -m 'update: 更新页面'