我的项目的 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,
}
};