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

相关推荐
酷炫码神10 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
酷炫码神12 小时前
Day 8|Vue3 响应式:告别手动操作 DOM,让数据驱动界面
javascript·vue.js·ecmascript
Kimnol13 小时前
我的第一次 Git 贡献:从 fork 到合并 PR #3130
git
码林鼠13 小时前
flutter状态管理入门教程-Riverpod
开发语言·javascript·flutter
互影派13 小时前
分享:Cocos 互动影游一套代码双端分发(Web H5 + Windows/Steam)实践
javascript
Amos_Web14 小时前
Markdonw语法
开发语言·前端·javascript
全栈项目管理程序猿14 小时前
ArcGIS JS 基础教程(34):体元系列 - 等值面 VoxelIsosurface
前端·javascript
SensorFlow14 小时前
离页埋点:sendBeacon 返回 true,为什么还不能算接收成功
javascript
兔子零102414 小时前
架构师最危险的能力:用正确的技术,做出错误的架构决策
前端·javascript·后端
Bug收容所15 小时前
Vue+js Day2
前端·javascript·vue.js