commitlint+husky配置

13 篇文章 0 订阅
6 篇文章 1 订阅

为什么需要规范commit日志?

  1. commit message 是程序员开发的日常操作, 但是实际工作中却常常被大家忽略

  2. 目前commit message 处于五花八门的书写风格,十分不利于阅读和维护

  3. 优秀的互联网科技公司都有一套代码提交规范,尤其是在一些大型开源项目中,commit message 都是十分一致

规范commit日志的好处

  1. 团队形成一致的代码提交风格,更好的提高工作效率

  2. 规范的 commit message 有助于团队其它人员 review, 还可以有效的输出 CHANGELOG, 对项目十分重要

  3. 成为一名有追求的工程师

工具介绍

  • @commitlint/cli: commitlint 的命令行工具
  • @commitlint/config-conventional: commitlint 的规则集
  • husky: 阻止不符合提交规则的 git 记录

安装步骤

1. 环境准备:

安装node环境,从Node.js官网(https://nodejs.org/en/)下载对应平台的安装程序,终端执行命令 node -v 和 npm -v 可以查看安装的node,npm的版本号,出现如下即成功。

2. commitlint 安装
npm install --save-dev @commitlint/cli @commitlint/config-conventional

解析: commitlint/config-conventional 是规则集,比较常用的 Conventional Commits 是 Angular 约定。

3. 配置 commitlint 规则 commitlint.config.js

新建 commitlint.config.js 文件,增加配置:

module.exports = {

  extends: ["@commitlint/config-conventional"],

};

或者一键生成配置文件

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

生成的配置文件是默认的规则,也可以自己定义规则,提交格式则如下:

<type>(<scope>): <subject>
1. type 为必填项,用于指定 commit 的类型。
  • build : 更改构建系统和外部依赖项(如将 gulp 改为 webpack,更新某个 npm 包)
  • ci : 对 CI 配置文件和脚本的更改
  • docs : 仅仅修改文档说明
  • feat : 增加一个新特性
  • fix : 修复一个 bug
  • perf : 更改代码以提高性能
  • refactor : 代码重构时使用
  • style : 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
  • test : 增加新的测试功能或更改原有的测试模块
2. scope 为非必填项,用于描述改动的范围,可以是文件的名称,最好包含路径。
3. subject 是必填项,这次提交的日志信息,提交日志必须有意义。

一般情况下,默认的就够用了。
当然,如果需要自定义限制这些规则,不启用默认的规则,可以把配置写的更详细

module.exports = {
  extends: [
    "@commitlint/config-conventional"
  ],
  rules: {
    'type-enum': [2, 'always', [
      'upd', 'feat', 'fix', 'refactor', 'docs', 'chore', 'style', 'revert'
     ]],
    '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', 72]
  }
};

rule配置说明: rule由name和配置数组组成,如:‘name:[0, ‘always’, 72]’,数组中第一位为level,可选0,1,2,0为disable,1为warning,2为error,第二位为应用与否,可选always|never,第三位该rule的值。

4. 配置 husky
npm i husky -D(如果安装失败需检查node版本,需要node10以上)

husky 的配置可以使用 .huskyrc、.huskyrc.json、.huskyrc.js 或 husky.config.js 文件。
这里介绍在 package.json 增加以下配置:

"husky": {
	"hooks": {
		"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
	}
},
5. 可以提交日志了。
$ git commit -m "增加commit校验"
husky > commit-msg (node v12.14.0)
⧗   input: 增加commit校验
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]
✖   found 2 problems, 0 warnings
ⓘ   Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky > commit-msg hook failed (add --no-verify to bypass)

以上就是错误示范,按照规定示范:

git commit -m "feat: 新功能提交"

注意: 冒号是英文,后面跟一个英文空格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值