我正在尝试使用预提交挂钩在提交发生之前检测 eslint 错误。我正在使用哈士奇和 lint-staged。但它对 src 中的所有文件运行 lint 命令,而不仅仅是对暂存文件运行 lint 命令。这是我的 package.json 文件。
"scripts": {
"test:ci": "cross-env CI=true react-scripts test --bail --passWithNoTests",
"lint": "eslint src/**/*.{js,jsx}",
"lint:fix": "eslint . --fix",
"precommit": "npm run lint && npm run test:ci"
}
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.js": [
"npm run precommit"
],
"*.jsx": [
"npm run precommit"
]
}
有什么方法可以使其仅适用于暂存文件,而不适用于目录中存在的其他文件?
使用 husky v7/lint-staged v11.2.0 - 暂存文件将简单地添加到命令末尾,并用空格分隔。如果你有一个.husky/pre-commit
调用的文件npx lint-staged
,然后你就有了一个 lint-staged 配置,如下所示:
{
'*.js': [
'eslint'
]
}
然后修改 src/foo.js 和 src/bar.js,将运行的命令是:
eslint src/foo.js src/bar.js
无论您在 lint 阶段配置中使用什么命令都没关系。文件只是添加到命令末尾,并用空格分隔。
这些文件将被传递到您的test:ci
命令,但它们不会进入您的 lint 子命令。
你可以用 bash 函数包装...像这样:
"precommit": "!runIt() { npm run lint $@ && npm run test:ci $@;}; runIt",
这是在我的手机上写的,我几乎不懂 bash,所以语法可能是错误的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)