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

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

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

我想稍微调整一下 https://github.com/import-js/eslint-plugin-import/blob/v2.26.0/docs/rules/no-extraneous-dependencies.md 规则,该规则https://github.com/airbnb/javascript/blob/eslint-config-airbnb-v19.0.4/packages/eslint-config-airbnb-base/rules/imports.js#L71-L97

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

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

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

回答1

看起来来自不同配置的单个规则的配置不会以某种方式合并。因此,如果配置 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,
  }
};

相似文章

随机推荐

最新文章