如何解决husky与lint-staged的路径找不到问题?
解决husky跨目录执行pre-commit钩子的问题
问题根源
执行git commit时,husky默认在**git根目录(project/)**运行钩子命令,但你的package.json存放在admin/frontend/目录下,导致yarn找不到配置文件抛出错误。
解决步骤
1. 修改package.json中的prepare脚本
调整prepare命令里添加pre-commit钩子的部分,确保钩子执行时先切换到frontend目录再运行lint-staged:
"scripts": { "start": "webpack serve --progress --mode development", "build": "webpack --progress --mode production", "prepare": "cd ../.. && husky install admin/frontend/.husky && husky add admin/frontend/.husky/pre-commit \"cd admin/frontend && yarn lint-staged\"" }
2. 重新执行prepare脚本
在admin/frontend/目录下运行命令,让husky重新生成正确的钩子文件:
yarn prepare
3. 验证钩子文件(可选)
打开admin/frontend/.husky/pre-commit文件,确认内容如下:
#!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" cd admin/frontend && yarn lint-staged
4. 测试git commit
现在执行git commit,husky会先切换到frontend目录找到package.json,再正常运行lint-staged,不会再出现找不到配置文件的错误。
额外调整(按需选择)
如果需要让lint-staged检查整个项目的文件,而非仅frontend目录下的代码,可以修改lint-staged的路径配置,使其相对于frontend目录向上匹配:
"lint-staged": { "../../**/*.{js,jsx,ts,tsx}": [ "prettier --write", "eslint --fix" ] }
内容的提问来源于stack exchange,提问作者yjlee
相关产品推荐
相关产品推荐

