0


Husky入门教程

Husky入门

使用Husky,编写脚本,在代码提交之前,自动对代码进行格式化、优化、自定义。

官方文档: https://typicode.github.io/husky/#/

简介

当你

commit

或者

push

的时候, 你可以使用它来对

commit

run

test

lint code

等进行lint 处理。

Husky

支持所有的 Git hooks。

一键使用

husky-init

是一个一次性命令,用于快速初始化带有 husky 的项目。

npx husky-init &&npminstall# npm
npx husky-init &&yarn# Yarn 1yarn dlx husky-init --yarn2&&yarn# Yarn 2+pnpm dlx husky-init &&pnpminstall# pnpm

它将设置 husky,修改

package.json

并创建一个可以编辑的示例

pre-commit

钩子。默认情况下,

commit

时它将运行

npm

测试。

要添加另一个钩子,则可使用

husky add .

npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'

手册

Yarn 2+

不支持编写生命周期脚本,所以

husky

需要以不同的方式安装(但这不适用于

Yarn 1

)。

  1. 安装npminstall husky --save-devprivate``````Yarn 2 :yarnadd husky --devyarnadd pinst --dev# ONLY if your package is not private
  2. 开启githooksnpx husky install``````Yarn 2 :yarn husky install
  3. 要在安装后自动启用 Git hooks,请编辑 package.json``````npm pkg setscripts.prepare="husky install"``````// package.json{"scripts":{"prepare":"husky install"}}``````Yarn 2 :// package.json{"private":true,// ← your package is private, you only need postinstall"scripts":{"postinstall":"husky install"}}

创建一个钩子

要向钩子添加命令或创建新的钩子,可以使用

husky add <file> [ cmd ]

(不要忘记在此之前运行

husky install

)。

npx husky add .husky/pre-commit "npm test"gitadd .husky/pre-commit

表示当你提交时,如果

npm test

失败,提交将自动停止

卸载

yarn remove husky &&git config --unset core.hooksPath

自定义目录

如果希望在另一个目录中安装

husky

, 例如

.config

,您可以将其传递给

install

命令。例如:

// package.json{"scripts":{"prepare":"husky install .config/husky"}}

绕过 hooks

您可以使用 Git

-n/—— no-verify

选项绕过

pre-commit

commit-msg

钩子:

git commit -m"yolo!" --no-verify

在 CI/Docker/Prod 中禁用husky

在 CI/Docker/Prod 上下文中没有禁用 Husky 的正确或错误方法,并且高度依赖于您的用例。

  1. npm

如果要防止

husky

完全安装

npm ci --omit=dev --ignore-scripts

或者

npm pkg delete scripts.prepare
npm ci --omit=dev
  1. 自定义脚本
"prepare":"node ./prepare.js"
// prepare.jsconst isCi = process.env.CI!==undefinedif(!isCi){require('husky').install()}
  1. env变量

你可以在你的

CI

配置文件中将

HUSKY

环境变量设置为

0

,禁用钩子安装。

# .husky/pre-commit# ...[-n"$CI"]&&exit0
  1. is-ci
npminstall is-ci --save-dev
// package.json{"scripts":{"prepare":"is-ci || husky install"}}

测试钩子

如果您想要测试一个钩子,您可以在脚本的末尾添加

exit 1

来终止 git 命令。

# .husky/pre-commit
# ...
exit 1 # Commit will be aborted

样例

// package.json{//..."scripts":{//..."lint:lint-staged":"lint-staged","prepare":"husky install",},// ..."devDependencies":{"husky":"7.0.4","lint-staged":"12.3.7","prettier":"2.6.2","stylelint":"14.7.1",},// ..."lint-staged":{"*.{js,jsx,ts,tsx}":["eslint --fix","prettier --write"],"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}":["prettier --write--parser json"],"package.json":["prettier --write"],"*.vue":["eslint --fix","prettier --write","stylelint --fix"],"*.{scss,less,styl,html}":["stylelint --fix","prettier --write"],"*.md":["prettier --write"]}}
# .husky/pre-commit[-n"$CI"]&&exit0npm run lint:lint-staged

配置完成后,在向git提交之前都会进行一系列代码格式化。

引用

Husky官方文档: https://typicode.github.io/husky/#/

标签: git github 前端

本文转载自: https://blog.csdn.net/HHoao/article/details/127833268
版权归原作者 HHoao 所有, 如有侵权,请联系我们删除。

“Husky入门教程”的评论:

还没有评论