如何调整(不是 100% 覆盖)来自我扩展的配置的现有 eslint 规则配置?

How to adjust (not 100% override) existing eslint rule's configuration coming from config I extend?

我的项目的 eslint 配置扩展自 airbnb:

module.exports = {
  root: true,
  parser: "@typescript-eslint/parser",
  parserOptions: {
    project: "./tsconfig.eslint.json",
  },
  plugins: ["@typescript-eslint"],
  extends: [
    "airbnb-base",
    "airbnb-typescript/base"
  ]
};

我想稍微调整一下import/no-extraneous-dependencies rule which is already configured with airbnb config

我有兴趣再添加一个文件以允许 devDependencies 导入:

rules: {
  "import/no-extraneous-dependencies": [
    "error",
    {
      devDependencies: ["vitest.config.ts"],
    },
  ],
},

如果我这样做,那么我会完全覆盖 'import/no-extraneous-dependencies'[1].devDependencies 中的列表,并且我从 airbnb 继承的配置会丢失。如何在 devDependencies 列表中再添加一个文件而不是完全覆盖规则的配置?

看起来来自不同配置的单个规则的配置不会以某种方式合并。所以,如果配置 import/no-extraneous-dependencies 规则的最后一个配置是 airbnb-typescript/base,那么我只需要导入它并根据需要进行调整。

以下是我的案例的解决方案:

const airbnb = require("eslint-config-airbnb-typescript/lib/shared");

const airbnbNoExtraDepsRule = airbnb.rules["import/no-extraneous-dependencies"];
airbnbNoExtraDepsRule[1].devDependencies.push("vitest.config.ts");

module.exports = {
  extends: ["airbnb-base", "prettier"],
  rules: {
    "import/no-commonjs": "on",
    "import/no-extraneous-dependencies": airbnbNoExtraDepsRule,
  }
};