如何覆盖我的 nx 工作区中的 eslint 规则?

How do I override an eslint rule in my nx workspace?

如何覆盖 plugin:@nrwl/nx/typescript 中的 eslint 规则?我已经对 .eslintrc.json.

的根目录进行了此更改
"rules": {
  "@typescript-eslint/member-ordering": "warn"
},

并且在引入违反规则的演示后仍然出现错误

D:\me\sample\apps\my-app\src\app\app.component.ts
  16:3  error  Member outOfOrder should be declared before all instance method definitions  @typescript-eslint/member-ordering

✖ 1 problem (1 error, 0 warnings)

Lint errors found in the listed files.

我也尝试将规则更改添加到打字稿的 overrides 部分。

无法在根级别上进行设置,因为您的项目的 .eslintrc.json 将始终覆盖这些更改,因为 @nrwl/nx/typescript 是在覆盖部分中设置的。

不幸的是,您必须在覆盖部分中为每个项目设置此项。

如果您有多个项目 and/or 需要应用多个更改,您可以将其提取到 eslint-custom-overrides 文件中并将其用作 extends 部分的最后一个:

{
  "extends": ["../../.eslintrc.json"],
  "ignorePatterns": ["!**/*"],
  "overrides": [
    {
      "files": ["*.ts"],
      "extends": [
        "plugin:@nrwl/nx/typescript",
        "../../eslintrc-custom-overrides.json"
      ],
   },
   ...
  ],
  ...
}

你的 eslintrc-custom-overrides.json 看起来像这样:

{
  "overrides": [
    {
      "files": ["*.ts"],
      "rules": {
         "@typescript-eslint/member-ordering": "warn"
      }
    }
  ]
}

查看有关 NX Issue 的更多详细信息。

我找到了一个非常适合我的解决方案,它避免了任何复制粘贴(我认为这是不可接受的)并且或多或少违背了已接受答案中的“不可能”断言。对我来说,关键不是使用基于文件的覆盖而是扩展。它工作得很好,并且完全按照我的意愿去做(并且没有看到任何缺点)。希望对您有所帮助:

一个 NextJS / React UI 项目

NodeJS GraphQL 项目的配置

所有 NextJS / UI 项目的配置

可被以上任何内容覆盖的所有内容的配置