前端工程化之(Husky):Git提交格式校验

1,398 阅读2分钟

本文简单记录下Husky的用法,如何用来校验git的提交格式。原理就是git hook各种生命周期去做校验,本文只简单罗略用法,不想篇幅过长阅读起来累🥱,原理跟细节不展开说有兴趣的直接去找git hook相关资料。

一、Husky安装

1、安装Husky,我这里的husky版本是"husky": "^9.0.11"

npm install --save-dev husky

2、安装后初始化一下

npx husky init

前面两步执行完之后,就会在项目目录自动生成一个.husky文件夹,然后package.json里面也会多一行代码

"scripts": {
    "prepare": "husky"
  }

文件夹里面会默认有一个pre-commit文件。当执行git commit的时候就会自动执行该文件里面脚本。不过本次我们不需要在这里写,后期的自动校验代码就需要。本次只演示git提交格式校验。

二、校验git消息格式

1、在项目根目录创建一个scripts目录,里面创建一个verify-commit.js文件,内容如下:

/* eslint-disable no-undef */
import chalk from 'chalk'

// argv[2]参数就是commit-msg消息的文件路径,里面放的就是commit -m后面的消息内容
const msgPath = process.argv[2]
import * as fs from 'node:fs'
const msg = fs
  .readFileSync(msgPath, 'utf-8')
  .trim()

const commitRE = /^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|release)(\(.+\))?: .{1,50}/

if (!commitRE.test(msg)) {
  console.error(
    `  ${chalk.bgRed.white(' ERROR ')} ${chalk.red(
      '不合法的 commit 消息格式'
    )}\n\n`
    + chalk.red(
      '  请使用正确的提交格式:\n\n'
    )
    + `    ${chalk.green('feat: add \'comments\' option')}\n`
    + `    ${chalk.green('fix: handle events on blur (close #28)')}\n\n`
    + chalk.red('  请查看 git commit 提交规范:https://jdf2e.github.io/jdc_fe_guide/docs/git/commit/。\n')
  )

  process.exit(1)
}

原理就是当我们执行git commit -m "xxx"的时候,husky去执行这个文件,当校验不通过的时候,就结束node进程。那如何让git提交的时候执行这个文件呢?接下来就是用到commit-msg这个生命周期了。
2、在.husky目录创建一个文件,名字叫commit-msg。内容是:

node scripts/verify-commit.js $1

image.png 这样就完成了,文件的命名就是git hook的生命周期,git操作会自动触发。

三、校验

随便写个提交

git commit -m "dddd"

image.png 大功告成!这样就能规范化提交格式了。