我正在尝试使用预提交 Hook 在提交发生之前检测 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"
}
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.js": [
"npm run precommit"
],
"*.jsx": [
"npm run precommit"
]
}
有什么办法让它只适用于暂存文件而不适用于目录中存在的其他文件?
最佳答案
据此lint-staged example ,我实现了,为了只检查暂存文件(大约需要 5 秒),除非有超过 5 个暂存文件,它会检查所有 repo(可能需要超过 1 分钟):
lint-staged
打包到最新版本.lintstagedrc.js
文件在你的 repo 的根目录。它可能包含如下内容:module.exports = {
'**/*.js?(x)': (filenames) =>
filenames.length > 5 ? 'eslint --ext .js,.jsx . --ignore-path .gitignore --fix .' : `eslint ${filenames.join(' ')} --fix`,
"*.json": [
"prettier --write"
]
}
package.json
中删除旧的“lint-staged”命令文件 关于eslint - 在暂存文件上运行 eslint "ONLY",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62425452/