lint-staged 只检查暂存区文件吗?为什么我改了没 add 的文件也被格式化了?
我刚配置了 lint-staged + husky,想只对 git add 过的文件做 eslint 和 prettier 检查。但奇怪的是,我改了一个还没 add 的文件,提交时它居然也被格式化了!
我的配置是这样的:
{
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
}
按理说 lint-staged 应该只处理 staged 文件才对啊?是不是我哪里理解错了?还是配置有问题?
先检查一下你的 .husky/pre-commit 钩子文件内容。确保它只调用了 lint-staged,而不是直接执行 eslint 或 prettier。常见的错误是同时添加了其他格式化命令。
可以优化成这样:
另外建议给 lint-staged 配置加上明确的扩展名限制和路径:
这能避免意外格式化到不该处理的文件。记得运行 npx husky install 来更新钩子配置。要是还有问题,试着删掉 node_modules/.cache/lint-staged 再重试。有时候缓存也会捣乱。