Pra*_*eek 11 pre-commit-hook eslint husky eslint-config-airbnb lint-staged
我正在尝试使用预提交钩子在提交之前检测 eslint 错误。我正在使用 husky 和 lint-staged。但它对 src 中的所有文件运行 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"
}
Run Code Online (Sandbox Code Playgroud)
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
Run Code Online (Sandbox Code Playgroud)
"lint-staged": {
"*.js": [
"npm run precommit"
],
"*.jsx": [
"npm run precommit"
]
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使它仅适用于暂存文件而不适用于目录中存在的其他文件?
使用 husky v7/lint-staged v11.2.0 - 暂存文件将简单地添加到命令末尾,并用空格分隔。如果您有一个.husky/pre-commit调用 的文件npx lint-staged,那么您就有一个 lint 阶段的配置,如下所示:
{
'*.js': [
'eslint'
]
}
Run Code Online (Sandbox Code Playgroud)
然后修改 src/foo.js 和 src/bar.js,将运行的命令是:
eslint src/foo.js src/bar.js
Run Code Online (Sandbox Code Playgroud)
无论您的 lint 阶段配置中包含什么命令,都没有关系。文件只是添加到命令末尾,并用空格分隔。
这些文件将传递给您的test:ci命令,但不会传递给您的 lint 子命令。
你可以用 bash 函数包装...像这样:
eslint src/foo.js src/bar.js
Run Code Online (Sandbox Code Playgroud)
这是在我的手机上写的,我几乎不懂 bash,所以语法可能是错误的
jon*_*ode -5
"husky": {
"hooks": {
"pre-commit": "lint-staged"
},
},
"lint-staged": {
"*.js": [
"eslint src/**/*.{js}",
"cross-env CI=true react-scripts test --bail --passWithNoTests",
"git add"
]
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6816 次 |
| 最近记录: |