在覆盖期间组合 ESLint 规则
Combining ESLint rules during an override
我正在开发一个混合了 TypeScript 和 JavaScript 文件的项目,我正在尝试为它们设置 linting 规则。我正在使用 ESLint 对 JS 文件进行 lint,并使用 typescript eslint plugin 对 typescript 文件进行 lint。由于我要添加 linting 的代码库相当大,我不得不关闭一些 JS 和 TS 的规则。当我尝试为 ESLint 创建配置文件时,这被证明是一个小问题。在我的配置文件中。我有 JS 文件的主要规则集,然后为 *.ts 文件创建了一个覆盖部分,我可以在其中使用打字稿 lint 规则。我的配置文件如下所示(规则部分只是代表性的)。
{
"extends": "eslint:recommended",
"rules": {
"no-unused-vars": "off",
"no-undef": "error",
"max-classes-per-file": "off"
},
"env": {
"es6": true,
"browser": true
},
"parserOptions": {
"ecmaVersion": 10
},
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-member-access": "off"
},
"parserOptions": {
"project": "tsconfig.json"
}
}
]
}
我必须为 TS 文件创建一个覆盖部分,因为并非所有 JS 文件都包含在 tsconfig.json 中,这在尝试通过相同配置对所有 JS 和 TS 文件进行 lint 时出现问题。
我现在 运行 遇到的问题是,为 TS 文件创建覆盖部分现在完全忽略了我在 JS 部分所做的规则覆盖,我最终不得不在两个文件中配置每个 ESLint 规则JS 配置我对 TS 文件的覆盖。有没有一种方法可以在覆盖中合并来自父部分的规则,以便它只是添加额外的规则而不是完全替换它们?
您可以为 *.js 和 *.ts 文件添加第二个覆盖,并在那里禁用规则,即:
{
"extends": "eslint:recommended",
"rules": {
"no-undef": "error"
},
"env": {
"es6": true,
"browser": true
},
"parserOptions": {
"ecmaVersion": 10
},
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-member-access": "off"
},
"parserOptions": {
"project": "tsconfig.json"
}
},
{
"files": [
"*.js",
"*.ts"
],
"rules": {
"no-unused-vars": "off",
"max-classes-per-file": "off"
}
}
]
}
我正在开发一个混合了 TypeScript 和 JavaScript 文件的项目,我正在尝试为它们设置 linting 规则。我正在使用 ESLint 对 JS 文件进行 lint,并使用 typescript eslint plugin 对 typescript 文件进行 lint。由于我要添加 linting 的代码库相当大,我不得不关闭一些 JS 和 TS 的规则。当我尝试为 ESLint 创建配置文件时,这被证明是一个小问题。在我的配置文件中。我有 JS 文件的主要规则集,然后为 *.ts 文件创建了一个覆盖部分,我可以在其中使用打字稿 lint 规则。我的配置文件如下所示(规则部分只是代表性的)。
{
"extends": "eslint:recommended",
"rules": {
"no-unused-vars": "off",
"no-undef": "error",
"max-classes-per-file": "off"
},
"env": {
"es6": true,
"browser": true
},
"parserOptions": {
"ecmaVersion": 10
},
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-member-access": "off"
},
"parserOptions": {
"project": "tsconfig.json"
}
}
]
}
我必须为 TS 文件创建一个覆盖部分,因为并非所有 JS 文件都包含在 tsconfig.json 中,这在尝试通过相同配置对所有 JS 和 TS 文件进行 lint 时出现问题。
我现在 运行 遇到的问题是,为 TS 文件创建覆盖部分现在完全忽略了我在 JS 部分所做的规则覆盖,我最终不得不在两个文件中配置每个 ESLint 规则JS 配置我对 TS 文件的覆盖。有没有一种方法可以在覆盖中合并来自父部分的规则,以便它只是添加额外的规则而不是完全替换它们?
您可以为 *.js 和 *.ts 文件添加第二个覆盖,并在那里禁用规则,即:
{
"extends": "eslint:recommended",
"rules": {
"no-undef": "error"
},
"env": {
"es6": true,
"browser": true
},
"parserOptions": {
"ecmaVersion": 10
},
"overrides": [
{
"files": [
"*.ts"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"rules": {
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-member-access": "off"
},
"parserOptions": {
"project": "tsconfig.json"
}
},
{
"files": [
"*.js",
"*.ts"
],
"rules": {
"no-unused-vars": "off",
"max-classes-per-file": "off"
}
}
]
}