最近,我配置了 eslint 我的一个项目。这个项目由数百个文件组成,一旦我配置了 eslint 就开始在所有文件中显示错误。
IMO,eslint遍历所有js文件,目前不需要。有什么方法可以限制 eslint 仅用于编辑过的文件?
最近,我配置了 eslint 我的一个项目。这个项目由数百个文件组成,一旦我配置了 eslint 就开始在所有文件中显示错误。
IMO,eslint遍历所有js文件,目前不需要。有什么方法可以限制 eslint 仅用于编辑过的文件?
eslint --fix $(git diff --name-only HEAD | xargs)
如果要对暂存和编辑的文件进行 lint,请使用:
eslint $(git diff --name-only HEAD | grep -E '\.(js|jsx)$' | xargs)
如果您想在终端中使用它,或者使用 yarn 运行它:
yarn run eslint $(git diff --name-only HEAD | grep -E '\.(js|jsx)$' | xargs)
解释:
git diff --name-only HEAD
: 编辑文件的名称grep -E '\.(js|jsx)$'
: 过滤 js 和 jsx 文件。您可以在此处添加文件格式。xargs
: 获取名称作为参数您也可以使用lint-staged库来 lint 暂存文件。如果您想在每次提交之前运行它并确保您的 repo 始终保持漂亮和 linted,这很有用。在此处
阅读更多相关信息。
如果要检查最后提交的文件,请使用:
eslint $(git diff --name-only HEAD HEAD~1 | grep -E '\.(js|jsx)$' | xargs)
也许您需要 ESLint 缓存?
https://eslint.org/docs/user-guide/command-line-interface#caching
我正在使用它,它就像一个魅力
LIST=`git diff-index --name-only --diff-filter=d HEAD | grep .*\\.js | grep -v json`; if [ \"$LIST\" ]; then eslint --fix $LIST; fi
我已经将它作为脚本添加到 package.json 中lint:git
,现在我用yarn lint:git
取自https://gist.github.com/oroce/11282380#gistcomment-2741146
以下命令对我来说非常方便:
git diff --name-only | xargs eslint --fix
它通过命令应用于输出eslint --fix
的每一行。git diff --name-only
xargs
对于较大的文件,其中执行包含数千行更改的拉取请求是不切实际的,您可以使用lint-diff
此工具仅对已更改的行进行 lints:
类似于@ELCAPITANBETO 的反馈
我们可以做的
eslint -c eslintrc.js $(git diff --name-only --diff-filter=ACMRTUXB master | grep -E \"(.js$|.ts$|.tsx$)\")
https://gist.github.com/seeliang/0f0de424d1cdc4541c338f4ee93b7e6a
答案是:不要为所有文件全局运行 Eslint。我认为您想要的是防止将有问题的代码提交到存储库(当然,它已经存在,在引入 linting 之前提交,但是您想防止进行包含 eslint 错误的新提交)。
这意味着只在那些文件上运行 Eslint 是有意义的,这些文件中有更改并且即将提交到 repo,即暂存文件。有一个包可以做到这一点,lint-staged。在 package.json 中,添加如下配置:
"scripts": {
"lint": "eslint --fix",
},
"lint-staged": {
"*.{js,mjs,cjs,jsx,ts,tsx,vue}": [
"npm run lint"
]
}
然后,当您运行时npm run lint-staged
,只有暂存的文件将作为参数传递给 lint 命令,因此只有那些文件会被 lint。通常将 lint-staged 与husky结合起来以自动运行 linting 和其他一些检查(例如格式化为预提交钩子)是有意义的(即,每次您尝试提交时,这些检查都将被执行)这样您可以确保不会提交任何包含错误的代码。