惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
B
Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
博客园 - 叶小钗
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
T
The Blog of Author Tim Ferriss
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
腾讯CDC
博客园 - Franky
博客园 - 聂微东
V
Visual Studio Blog
GbyAI
GbyAI
Martin Fowler
Martin Fowler
罗磊的独立博客
Y
Y Combinator Blog

Fall 的笔记本 Blog

性能优化清单 npm前端包 2分钟环境搭建 客户想要的不是她们所说的(译) TypeScript声明 git功能查找
你为什么需要 husky
2025-07-24 · via Fall 的笔记本 Blog

husky(哈士奇)一种精力和破坏力都极强的生物,混乱制造者。有一位伟大的法师说过,要用魔法来打败魔法,你需要这个 husky,帮助你避免一个不留神家被拆了。

还有一个原因是,能用工具解决的问题都使用工具解决,而非额外的人力。

如果你想要找一个项目作为参考,可以查看我的 鲜果起始页 项目

前提准备

一个 js 项目 配置好 eslint 安装好 git

添加依赖

安装 husky,husky 本身只提供了执行 git 对应命令时,调取对应的钩子函数,因此需要其它工具来执行对应的检查

commitlint 用于对提交内容(commit message)进行检查

npm i @commitlint/cli @commitlint/config-conventional -D

lint-staged 用于在缓冲区执行 lint,代码检查

cz-git 自定义 git 提交工具

更新你的 package.json

{
"scripts": {
"lint-staged": "lint-staged", // 该命令用于在缓冲区执行
"commit": "czg", // 之后可以使用 npm rum commit 代替 git commit -m ''
"prepare": "husky init" // 拉去依赖后,自动执行该命令
},
"config": {
"commitizen": { // 定义 commitlint 的配置
"path": "node_modules/cz-git"
}
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [ // 对以 js,jsx,ts,tsx 后缀名的文件使用 eslint --fix
"eslint --fix"
],
"*.{md,json}": [ // 对以 md,json 后缀名的文件使用 prettier --write
"prettier --write"
]
}
}

创建 husky 文件

husky 会在 package.json 目录创建 .husky 文件,如果没有创建,可以手动创建

手动创建 .husky\commit-msg 文件,并且添加以下内容

#!/bin/sh
# . "$(dirname "$0")/_/husky.sh"

npx --no -- commitlint --edit $1

手动创建 .husky\pre-commit 文件,并且添加以下内容

#!/bin/sh
# . "$(dirname "$0")/_/husky.sh"

npm run lint-staged

echo '✅✅✅ lint pass ✅✅✅'

你可以在这些 bash 文件中自定义命令,来实现你相对应的需求

完成

到了这里,你已经完成了在项目中添加 husky 的所有步骤,并且添加提交检查以及 git 缓冲区的检查功能

之后你可以使用 npm run commit 提交变更