关于husky8.0 与 4.0的配置

husky的场景使用很多,一般大多场景是在配置git commit 命令拦截hook, 校验 commit-msg 格式规范。以下环境默认:git >= 2.27.0, node >=14

1、安装huskey@8.0.1

bash 复制代码
npm install --save-dev husky@8.0.1

2、初始化配置文件

  • 在package.json scripts 属性中添加命令并保存:
javascript 复制代码
"scripts": {
	"prepare": "npx husky install"
}
  • 在控制台输入:npm run prepare 初始化 husky, 则在工程根目录创建.husky目录 ,如下图:
  • 初始化commit-msg函数配置文件
bash 复制代码
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"'

在./husky/commit-msg文件中生成

bash 复制代码
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx --no-install commitlint --edit $1
  • 初始化pre-commit函数配置文件
bash 复制代码
npx husky add .husky/pre-commit "npx lint-staged"
  • 在./husky/pre-commit文件中生成
bash 复制代码
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged

以上: 钩子函数已经配置完毕, 执行 git commit 命令之后,会被拦截开始执行./husky/下 pre-commit、commit-msg 配置文件中脚本

3、配置自定义的git commit-msg格式规范

  • commitlint 提交校验安装配置

    bash 复制代码
    npm install --save-dev @commitlint/cli@17.0.2 @commitlint/config-conventional@17.0.2
  • 在工程目录创建commitlint.config.js文件

javascript 复制代码
'use strict';
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [
      2,
      'always',
      [
        'feat', 
        'fix', 
        'docs', 
        'style', 
        'refactor', 
        'perf', 
        'test', 
        'chore', 
        'revert', 
        'build', 
        "impr", 
        "ci", 
        "jvm", 
        "pom", 
        "apm", 
        "conf", 
        "typo", 
        "wip", 
      ]
    ],
    '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]
  }
};

以下是4.0的配置

4、安装huskey@4.3.8

bash 复制代码
npm install --save-dev husky@4.3.8

5、初始化配置文件

  • 在package.json scripts 属性中添加命令并保存:
javascript 复制代码
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
}

6、配置自定义的git commit-msg格式规范

  • commitlint 提交校验安装配置
bash 复制代码
npm install --save-dev @commitlint/cli@16.3.0 @commitlint/config-conventional@16.2.4

注意:高版本与低版本的husky有冲突

请检查根目录下.git/config 文件中是否含有高版本husky的字段配置, 若有则注释掉husky的配置

相关推荐
kyriewen22 分钟前
异步编程:从“回调地狱”到“async/await”的救赎之路
前端·javascript·面试
前端Hardy25 分钟前
别再手动写 loading 了!封装一个自动防重提交的 Hook
前端·javascript·vue.js
前端Hardy26 分钟前
前端如何实现“无感刷新”Token?90% 的人都做错了
前端·javascript·vue.js
SuperEugene35 分钟前
Vue Router 实战规范:path/name/meta 配置 + 动态 / 嵌套路由,统一团队标准|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
张一凡931 小时前
easy-model -- "小而美"的React状态管理方案
前端·javascript·react.js
前端Hardy1 小时前
纯 HTML/CSS/JS 实现的高颜值登录页,还会眨眼睛!少女心爆棚!
前端·javascript·vue.js
includei1 小时前
【JavaScript】华为机试_HJ20_密码验证合格程序
开发语言·javascript·华为
沫离痕2 小时前
AI机器人客服-Dify接入
开发语言·javascript·ecmascript
Irene19912 小时前
Git 命令汇总表(基于一次完整的 Git 实战经验整理,涵盖从安装配置到日常开发、问题排查的所有常用命令)
git·常用命令
天理小学渣2 小时前
JavaScript_基础教程_自学笔记
开发语言·javascript·笔记