<SKYLER/>
如何正确使用husky做代码格式校验
Back to Blog
August 12, 2022(updated August 14, 2022)前端工程化

🤗如何正确使用husky做代码格式校验

The best techniques for sharing code snippets and screencasts that will help propel your open source projects to success.

这里使用的husky版本:8.0.0

安装

husky

husky是一款git-hooks执行工具,帮助我们在提交代码时执行一些代码检查或其他的操作,一般用到pre-commit和commit-msg钩子。 安装过程请看官方文档的自动安装步骤手动安装步骤

eslint

代码检查工具。 安装过程请看官方文档

lint-staged

可能有人会和笔者一样觉得,有了husky + eslint还要lint-staged干嘛呢?如果是husky + eslint的话,每次提交代码时会全量进行eslint检查,而lint-staged就跟它名字一样只是对git staged(暂存区)中要提交的代码进行检查。

安装:

  1. npm install --save-dev lint-staged
  2. 添加pre-commit钩子npx husky add .husky/pre-commit 'npx lint-staged'
  3. 在package.json中配置lint-staged
{
  "lint-staged": {
    "*.{js,jsx,tsx,ts}": ["eslint --fix"]
  }
}

注意点🫵🏻

  1. 有些文章会要求把.husky/_目录提交到git仓库,其实是不需要的,原因见下方第二点。
  2. package.json中的"prepare": "husky install"不要删,这是一个npm的钩子,每次npm install的时候会初始化husky(也就是.husky/_目录),保证了新人进入项目,husky是能够正常运行的。
  3. 这里husky安装好之后就git commit一次,因为笔者遇到一个问题,如果和lint-staged一起提交,如果有代码错误的话,eslint会把.husky下面的钩子脚本的执行权限给去掉,就导致husky不起作用。

踩坑

切换git分支时会将.husky下的脚本执行权限干掉,通过以下方法将脚本执行权限提交到版本管理中:

git update-index --chmod +x .husky/commit-msg
git update-index --chmod +x .husky/pre-commit

执行上面两条命令后,再将权限修改提交到版本管理中