git提交规范工具commitlint

9,970 阅读2分钟

前言

commitlint 是什么?

commitlint 是一个 git commit 校验约束工具。

就是当我们运行git commmit -m 'xxx'时,来检查'xxx'是不是满足团队约定好的提交规范的工具。

安装

安装@commitlint/config-conventional @commitlint/cli

cnpm install --save-dev @commitlint/config-conventional @commitlint/cli

安装成功之后的package.json中可以看到

image-20220226170421505

💥 其他

使用npm安装的时候有报错npm ERR! invalid options argument,(不知道为什么)

image-20220226170629256

但是换成cnpm安装就正常了

image-20220226170643214

安装 husky

cnpm install husky --save-dev 

husky 是一个增强的 git hook 工具,可以在 git hook 的各个阶段执行我们在 package.json 中配置好的 npm script。

借助husky在每次 commit 时执行 commitlint来检查我们输入的 message

安装git钩子

安装git钩子

npx husky install

启用适配commitlint的commit-msg hook

image-20230113100604080

 npx husky add .husky/commit-msg 'npx commitlint --edit $1
  • commitlint --edit <文件名>:执行 commitlint 命令行工具,并使用 --edit 选项,从一个文件里提取 commit 内容来进行校验。校验规则由 commitlint.config.js 配置文件来指定,reference-cli
  • $1:在新版的 husky 中 $HUSKY_GIT_PARAMS 变量已不再使用,取而代之是 $1文档地址

🎨 测试一下效果

git add .
git commit -m "feat: test"

可以看到提示我们配置commitlint.config.js文件

image-20220226195523483

commitlint 提交规范

提交格式

git commit -m <type>[optional scope]: <description> //注意冒号后面有空格
- type:提交的改动类型(如新增、修改、更新等)
- optional scope:标识此次提交主要涉及到代码中哪个模块
- description:一句话描述此次提交的主要内容

常用type

type描述
feat新增功能
fixbug 修复
style不影响程序逻辑的代码修改(修改空白字符,补全缺失的分号等)
refactor重构代码(既没有新增功能,也没有修复 bug)
docs文档更新
test增加测试
chore构建过程或辅助工具的变动

示例:

git commit -m 'feat: 增加 xxx 功能'
git commit -m 'bug: 修复 xxx 功能'

配置commitlint.config.js

输入命令创建配置文件(在根目录)

 echo  " module.exports = {extends: ['@commitlint/config-conventional']}; "  > commitlint.config.js

rule配置

rule由name配置数组组成,如:'name:[0, 'always', 72]'

数组第一位,参数设置错误级别

  • 0:disable
  • 1:warning
  • 2:error

数组第二位,是否应用

  • always
  • never

数组第三位,rule的值

具体规则参考 👉 更多

关于配置文件 👉 更多

🎨 现在再测试一下

不规范的写法会报错

image-20220226195629378

规范写法

image-20220226195752216

参考资料:

commitlint文档

husky文档


🎨【点赞】【关注】不迷路,更多前端干货等你解锁

往期推荐

👉 Vite基础入门

👉 15 个JavaScript数组实用技巧

👉 JavaScript数组方法看这一篇就够了

👉 JS内置日期对象Date的使用指南