ESLint 忽略特定目录的特定规则

Posted

技术标签:

【中文标题】ESLint 忽略特定目录的特定规则【英文标题】:ESLint ignore specific rule for a specific directory 【发布时间】:2017-05-10 01:13:38 【问题描述】:

ESLint 是否可以忽略整个目录的特定规则?

就我而言,我想忽略 import/prefer-default-export 的目录名为 commonComponents

【问题讨论】:

这能回答你的问题吗? Disable eslint rules for folder @A-312 确实如此,但我认为这里的答案质量更好。 【参考方案1】:

ESLint configuration (.eslintrc) files 是分层的:

ESLint 将自动在要检查的文件的目录中查找它们,并在连续的父目录中一直查找到文件系统的根目录。当您希望项目的不同部分有不同的配置或希望其他人能够直接使用 ESLint 而无需记住传递配置文件时,此选项很有用。

您可以通过在该目录中创建具有以下内容的.eslintrc 文件来禁用commonComponents 目录的import/prefer-default-export 规则:


    "rules": 
        "import/prefer-default-export": "off"
    

【讨论】:

您能告诉我您在哪里找到有关如何切换此规则的文档吗? eslint-plugin-import 文档没有帮助 @Dimitris 不确定你的意思。该规则具有no options,因此它只是根据ESLint documentation 进行的简单开/关。【参考方案2】:

您还可以使用“overrides”键为不同的 glob 模式声明规则。

阅读Configuration Based on Glob Patterns

有时需要更精细控制的配置,例如,如果同一目录中的文件的配置必须不同。因此,您可以在仅适用于与特定 glob 模式匹配的文件的 overrides 键下提供配置,使用与在命令行中传递的相同格式(例如,app/**/*.test.js)。

我使用它从我的测试文件中删除no-unused-expressions 规则,如下所示;

"overrides": [
  "files": [ "*.spec.js" ],
  "rules": 
    "no-unused-expressions": 0
  
]

【讨论】:

这是最好的解决方案。每次我们想忽略已接受答案中的文件夹规则时,我们都不必添加新文件。【参考方案3】:

如果您希望将规则应用到多个目录,那么您可以为不同的目的创建不同的配置。例如:

.eslintrc.json 通用配置 .eslintrc-main.json 用于主要 linting 并运行 eslint -c .eslintrc-main src test .eslintrc-comp.json 用于组件并运行 eslint -c .eslintrc-comp commonComponents fooBarComponent

【讨论】:

【参考方案4】:

YAML 版本:

rules:
  no-unused-expressions: true

overrides:
  - files: *-tests.js
    rules:
      no-unused-expressions: false

【讨论】:

【参考方案5】:

cretae .eslintignore 文件并将您排除的文件夹放入其中。示例:

node_modules/
functions/
dist/

【讨论】:

这并不试图回答这个问题。

以上是关于ESLint 忽略特定目录的特定规则的主要内容,如果未能解决你的问题,请参考以下文章

关闭特定文件的eslint规则

ESlint:关闭项目中的特定规则

使用 eslintrc 禁用特定文件结尾的 ESlint 规则

允许调试器;某些文件中的语句,使用 ESLint

使 ESLint 仅将规则应用于某些文件名模式

覆盖子目录中的全局 eslint 配置规则