使用lint-staged的Git Hook运行缓慢,配置是否有误?
问题分析与解决方案
你的提交hook运行缓慢的核心原因有两个,结合配置来看:
1. 缺失核心依赖包
你的package.json中只安装了prettier,但没有本地安装husky和lint-staged。这会导致每次触发hook时,npx需要远程检查依赖版本、甚至临时下载包,这是耗时的主要来源。
2. 未启用Prettier缓存
默认情况下Prettier的缓存机制未完全生效,导致每次都重新格式化所有匹配文件(即使只有单个文件变更)。
具体修复步骤:
安装缺失的依赖
在项目根目录运行以下命令,将husky和lint-staged安装为开发依赖:npm install --save-dev husky lint-staged重新配置husky hook
确保pre-commit hook直接调用本地的lint-staged,避免npx的远程开销:npx husky add .husky/pre-commit "npx lint-staged"优化lint-staged配置,启用Prettier缓存
修改package.json中的lint-staged配置,添加--cache参数让Prettier只处理变更过的文件:"lint-staged": { "*.{js,css,md}": ["prettier --write --cache"] }检查Node.js版本
确保你的Node.js版本≥16.x,Prettier 3.x和husky v8+对老版本Node的兼容性差,运行效率低。
完成以上配置后,重新提交单个文件,耗时应该会降到几百毫秒以内。
内容的提问来源于stack exchange,提问作者AS3
相关产品推荐
相关产品推荐

