跳到主要内容

Husky🐶使用小心得

· 阅读需 3 分钟

根据Husky 官网文档一步一步安装使用Husky🐶,并添加lint-stagedcommit-lint来完善 Git 提交工作流。

安装

第一步,根据官方文档,使用包管理器安装安装 Husky,我这边使用的是pnpm

pnpm add --save-dev husky

初始化

提示

init命令简化了项目中的 husky 设置。它会在.husky/中创建pre-commit脚本,并更新package.json中的prepare脚本。随后可根据你的工作流进行修改。

安装完成之后,执行husky init命令,来初始化 Husky。

pnpm exec husky init

初始化之后,目录下会自动生成.husky文件夹,里有一个_文件夹和pre-commit钩子。接下来就可以在pre-commit钩子中添加自己的脚本了,或是使用其他的钩子。

.husky
├─pre-commit
└─_
.husky/pre-commitsh
pnpm test

添加lint-staged

lint-staged是一个流行的工具,通常与pre-commit钩子一起使用,用于在提交更改到代码仓库之前自动运行 linters 和其他代码格式化工具。它的主要目的是确保只对暂存的文件(即那些已经添加到 Git 暂存区的文件)运行这些工具,从而节省时间并只关注那些即将提交的更改。

pnpm add --save-dev lint-staged

然后在package.json中添加lint-staged配置。

package.jsonjson
{
"lint-staged": {
"*.{js,jsx,ts,tsx}": "eslint --fix",
"*.{md,mdx}": "markdownlint --fix",
// 对于多条指令,可以使用数组指定
"src/**/*.{js,jsx,ts,tsx,vue}": ["prettier --write", "eslint --fix"]
}
}

最后修改pre-commit钩子,以便在提交前自动触发,进行格式化和 lint。

.husky/pre-commitsh
pnpm test

添加commit-lint

commitlint用于检查 Git 提交消息是否遵循预定义的风格指南。这个工具非常有助于维持项目中提交历史的清晰和一致性,特别是在团队环境中,不同的开发者可能习惯于使用不同的提交消息格式。

pnpm add --save-dev @commitlint/cli @commitlint/config-conventional

安装完成后,在package.json同级目录下创建commitlint.config.js以配置commitlint

commitlint.config.jsjs
export default { extends: ["@commitlint/config-conventional"] };

配置完成后,需要在.husky目录下新建commit-msg钩子,以便在提交时自动触发commitlint

.husky/commit-msgsh
npx --no -- commitlint --edit ${1}