如何调整(不是 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,
}
};
我的项目的 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,
}
};