eslint - per file parserOptions.sourceType?

13

我的项目大部分文件都使用Webpack和es6模块,这些文件在浏览器中运行并由Webpack打包。

只有少量文件在node运行,它们没有被Webpack处理,我认为将它们包含在Webpack中没有任何好处。它们不支持import,因为它在node(或V8)中尚未实现。

现在,在.eslintrc中,如果我将parserOptions.sourceType设置为script,则在浏览器文件中会出现错误("importexport仅允许在模块中!"),如果将parserOptions.sourceType设置为module,则会在node文件中出现错误。

那么如何针对每个文件设置parserOptions呢?在这种情况下,/* eslint-env xxx */无法解决问题。

编辑

我可以使用特定目录的.eslintrc,但这意味着为了更改一个选项而重复所有其他配置。还有更好的选择吗?


你能够利用.eslintrc文件的层级结构吗?我曾经认为它们会继承父目录中任何.eslintrc的配置。我有一个模糊的记忆,好像曾经使用过这个功能。 - cartant
@cartant 啊,谢谢!它是分层的。据我所知,文档中没有提到。你能把它作为答案吗,这样我就可以接受它了。 - Boyang
2个回答

19

另一种选择是使用以下 overrides :

{
  "extends": "eslint:recommended",
  "overrides": [{
    "files": ["path/to/some/file.js", "path/to/some/folder/**.js"],
    "parserOptions": {
      "sourceType": "module"
    }
  }]
}

请参阅 https://eslint.org/docs/user-guide/configuring#example-configuration

这种解决方案的好处:

  • 如果您只需要文件夹中的单个文件具有特定覆盖,则可以实现。
  • 如果您需要在多个位置共享相同的覆盖,则可以避免重复文件(这是良好的DRY实践)。

12
你应该能够利用ESLint配置文件(.eslintrc的分层结构:
ESLint会自动在要检查的文件所在目录以及逐级向上到文件系统根目录中寻找它们。当你想要在项目的不同部分使用不同的配置或者希望别人可以直接使用ESLint而无需记住传递配置文件时,这个选项非常有用。
请注意,子目录中的.eslintrc文件会继承父目录中的.eslintrc文件的配置,因此很容易覆盖特定的设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接