如何配置 eslint 以忽略我的根文件夹并仅包含我的 src 文件夹?

问题描述 投票:0回答:2

当我阅读 eslint 文档时,似乎我应该能够仅用 1 或 2 行代码就可以让它工作。

你看,这里(https://eslint.org/docs/latest/user-guide/configuring/ignoring-code#ignorepatterns-in-config-files)他们说:

您可以在配置文件中使用

ignorePatterns
告诉 ESLint 忽略特定文件和目录。
ignorePatterns
模式遵循与
.eslintignore
相同的规则。请参阅
.eslintignore
文件文档以了解更多信息。

好吧,这些文档只是再往下一点(https://eslint.org/docs/latest/user-guide/configuring/ignoring-code#the-eslintignore-file),他们说:

以 ! 开头的行是否定模式,重新包含被早期模式忽略的模式。

所以,我当时想,应该有这个列表:

ignorePatterns: ["*", "!src/**/*"]

但事实并非如此。我真的不明白为什么... VSCode 停止对所有文件进行 linting,当我运行

npm run lint
命令时,我收到以下消息:

您正在对“src”进行 linting,但所有与 glob 模式“src”匹配的文件都将被忽略。

哦,为了防止误解,我的

npm run lint
命令不需要这个。因为在该命令中我已经可以将 eslint 配置为仅查看我的
src
文件夹。我想让这些
ignorePatterns
像我描述的那样工作的原因是因为我希望 VSCode 停止尝试检查 src 文件夹之外的文件。

eslint eslintrc
2个回答
5
投票

好吧,我设法让它发挥作用。我在另一个 stackoverflow 线程上读到,如果你用斜杠开始一个模式,它将自动意味着该模式将从根文件夹开始,只要你不添加任何

**
到模式中,它也会获胜不要比根文件夹更深。

例如:

"*"
可以表示项目中任何位置的任何文件或文件夹。但
"/*"
只能表示项目根目录中的任何文件或文件夹。

然后我还阅读了以下关于 gitignore 的 git 文档

可选前缀

"!"

,用于否定模式;先前模式排除的任何匹配文件将再次包含在内。 
如果排除该文件的父目录,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含的文件上的任何模式都无效,无论它们是在哪里定义的。

(强调我的)

因此,当我之前这样做时:

ignorePatterns: ["*", "!src/**/*"]

,它不起作用,因为
"*"
匹配各处的每个文件和文件夹,包括
src
中每个文件和文件夹的所有父级。这意味着我无法重新包含它们。

无论如何,修复起来相当简单。也就是说,这个:

ignorePatterns: ["/*", "!/src"]
因为 

"/*"

 匹配根文件夹中的所有文件和文件夹(但不是根文件夹本身),因此 
src
 的父级都没有被忽略,因此我可以用 
src
 重新包含 
"!/src"
 .


0
投票
使用新的“eslint.config”平面文件模式更新 Eslint。您的忽略数组应该位于配置数组上它自己的对象中。

查看问题 -

https://github.com/eslint/eslint/issues/17400

// eslint.config.mjs export default [ {...} // Some configs { ignores: ["/*", "!/src"] } {...} // Some more configs ]
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.