eslint - 每个文件 parserOptions.sourceType?

eslint - per file parserOptions.sourceType?

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

node.js 中 运行 只有少量文件。它们没有被 Webpack 触及,我看不到将它们包含在 webpack 中有任何好处。他们不支持 import 因为它还没有在节点(或 V8)中实现。

现在在 .eslintrc 中,如果我将 parserOptions.sourceType 设置为 script,它会在浏览器文件中出错(“importexport 只允许在模块中!”)。如果 parserOptions.sourceType 设置为 module,它会在节点文件中出错。

那么每个文件如何处理parserOptions/* eslint-env xxx */ 在这种情况下不起作用

编辑

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

您应该能够利用 ESLint configuration (.eslintrc) files 的分层特性:

ESLint will automatically look for them in the directory of the file to be linted, and in successive parent directories all the way up to the root directory of the filesystem. This option is useful when you want different configurations for different parts of a project or when you want others to be able to use ESLint directly without needing to remember to pass in the configuration file.

请注意,子目录中的 .eslintrc 个文件继承父目录中 .eslintrc 个文件的配置,因此很容易覆盖特定设置。

另一种选择是使用 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 做法)。