You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NX lint时忽略生成器模板中的.eslintrc.json文件

解决NX插件Lint时模板ESLint配置文件报错问题

问题场景

我创建了一个名为nx的NX插件/lib,其package.json中定义的linting目标如下:

"lint": {
  "executor": "@nrwl/linter:eslint",
  "outputs": ["{options.outputFile}"],
  "options": {
    "lintFilePatterns": [
      "libs/nx/executors.json",
      "libs/nx/package.json",
      "libs/nx/src/executors",
      "libs/nx/src/generators"
    ]
  }
}

插件自身的.eslintrc.json配置:

{
  "extends": ["../../.eslintrc.json"],
  "ignorePatterns": ["!**/*"]
}

继承的根目录.eslintrc.json配置:

{
  "root": true,
  "ignorePatterns": ["**/*"],
  "plugins": ["@nrwl/nx"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
      "rules": {
        "@nrwl/nx/enforce-module-boundaries": [
          "error",
          {
            "enforceBuildableLibDependency": true,
            "allow": [],
            "depConstraints": [
              {
                "sourceTag": "*",
                "onlyDependOnLibsWithTags": ["*"]
              }
            ]
          }
        ]
      }
    },
    {
      "files": ["*.ts", "*.tsx"],
      "extends": ["plugin:@nrwl/nx/typescript"],
      "rules": {}
    },
    {
      "files": ["*.js", "*.jsx"],
      "extends": ["plugin:@nrwl/nx/javascript"],
      "rules": {}
    },
    {
      "files": "*.json",
      "parser": "jsonc-eslint-parser",
      "rules": {}
    }
  ]
}

报错情况

生成器目录中包含用于生成ts应用的模板,每个模板都有自己的.eslintrc.json文件。运行lint时会解析这些文件,导致报错:

Failed to load config "../../.eslintrc.base.json" to extend from.
Referenced from: 
[...]/libs/nx/src/generators/application/template/.eslintrc.json

我尝试修改插件的.eslintrc.json中的ignorePatterns为以下内容,但没有效果:

{
  "ignorePatterns": ["!**/*", "**/*.eslintrc.json"]
}

解决方案

方案1:调整lint目标的文件匹配规则(推荐)

直接在package.json的lint配置中,通过否定匹配模式排除模板目录中的.eslintrc.json文件,避免ESLint解析这些文件:

"lint": {
  "executor": "@nrwl/linter:eslint",
  "outputs": ["{options.outputFile}"],
  "options": {
    "lintFilePatterns": [
      "libs/nx/executors.json",
      "libs/nx/package.json",
      "libs/nx/src/executors",
      "libs/nx/src/generators",
      "!libs/nx/src/generators/**/.eslintrc.json"
    ]
  }
}

方案2:在ESLint配置中精准忽略模板文件

修改插件的.eslintrc.json,调整ignorePatterns的顺序和匹配规则,确保模板中的.eslintrc.json被正确忽略:

{
  "extends": ["../../.eslintrc.json"],
  "ignorePatterns": [
    "!**/*",
    "**/generators/**/.eslintrc.json"
  ]
}

这里的关键是用更精确的路径**/generators/**/.eslintrc.json,避免模糊匹配导致的失效。

方案3:在根ESLint配置中排除模板JSON文件

在根目录的.eslintrc.json中,针对JSON文件的规则块添加exclude属性,跳过模板中的.eslintrc.json:

{
  "root": true,
  "ignorePatterns": ["**/*"],
  "plugins": ["@nrwl/nx"],
  "overrides": [
    // ... 其他规则块保持不变
    {
      "files": "*.json",
      "exclude": ["**/generators/**/.eslintrc.json"],
      "parser": "jsonc-eslint-parser",
      "rules": {}
    }
  ]
}

原因说明

之前的ignorePatterns修改无效,是因为!**/*会先取消根配置中**/*的忽略规则,让所有文件都被纳入检查范围;而后续添加的**/*.eslintrc.json模糊匹配可能因为路径优先级问题,没有正确覆盖模板目录下的目标文件。通过精准路径匹配或直接在lint目标中排除,能从根源避免ESLint解析这些不属于当前插件的模板配置文件。

内容的提问来源于stack exchange,提问作者caisah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:20:47