Loading

Commitlint &husky

一、Commitlint安装

https://github.com/conventional-changelog/commitlint/

1.1、Commitlint 是什么

我们运行 git commmit -m 'xxx' 时,用来检查 xxx 是否满足固定格式的工具。

1.2、安装

npm init

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

1.3、生成配置文件commitlint.config.js

当然也可以是 .commitlintrc.js

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

在当前目录进行测试

echo "build: test"|npx commitlint

二、husky

2.1、husky安装

还要为 git 配置 husky ,对 git 的 commit 操作进行校验。

husky继承了Git下所有的钩子,在触发钩子的时候,husky可以阻止不合法的commit,push等等

npm install husky --save-dev

在 package.json 中引入 husky

// package.json
{
  ...
  ...
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }  
  }
}

这段配置告诉了git hooks,

1、当我们在当前项目中执行 git commit -m '测试提交' 时将触发commit-msg事件钩子并通知husky
2、执行 commitlint -E HUSKY_GIT_PARAMS命令,也就是我们刚开始安装的./node_modules/.bin/commitlint,

3、它将读取commitlint.config.js配置规则并对我们刚刚提交的测试提交这串文字进行校验,若校验不通过,则在终端输出错误,commit终止。

三、提交规范

3.1、提交规范

推荐我们使用 config-conventional 配置去写 commit

提交格式(注意冒号后面有空格)

git commit -m <type>[optional scope]: <description>

type :用于表明我们这次提交的改动类型,是新增了功能?还是修改了测试代码?又或者是更新了文档?

optional scope:一个可选的修改范围。用于标识此次提交主要涉及到代码中哪个模块。

description:一句话描述此次提交的主要内容,做到言简意赅。

3.2、常用的 type 类型

类型 描述
build 编译相关的修改,例如发布版本、对项目构建或者依赖的改动
chore 其他修改, 比如改变构建流程、或者增加依赖库、工具等
docs 文档修改
feat 新特性、新功能
fix 修改bug
perf 优化相关,比如提升性能、体验
refactor 代码重构
revert 回滚到上一个版本
ci 持续集成修改
style 代码格式修改, 注意不是 css 修改
test 测试用例修改
  • 例子
git commit -m 'fix(account): 修复xxx的bug'
git commit -m 'refactor: 重构整个项目'
posted @ 2022-09-13 15:43  xine  阅读(89)  评论(0编辑  收藏  举报