关于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的配置

相关推荐
2分钟速写快排6 小时前
孔乙己的茴字有多少种写法?|AI 对话实时通信的三种实现
前端·javascript·github
用户00447295382513 小时前
练歌镜:让眼镜听懂“循环这一句”
javascript
yuyuxun115 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
总要学点什么18 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界20 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
总要学点什么20 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
程序员大阳20 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半21 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
程序员大阳21 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var
曦樂~1 天前
【Web Development】03JavaScript 基础和事件
开发语言·前端·javascript