typescript 在覆盖期间组合ESLint规则

f45qwnt8  于 2023-03-31  发布在  TypeScript
关注(0)|答案(2)|浏览(124)

我正在做一个混合了TypeScript和JavaScript文件的项目,我正在尝试为它们设置linting规则。我使用ESLint来lint JS文件和typescript eslint plugin来lint typescript文件。由于我添加linting的代码库相当大,我不得不关闭JS和TS的一些规则。当我尝试为ESLint创建配置文件时,这被证明是一个小问题。在我的配置文件中。我有JS文件的主要规则集,然后为 *.ts文件创建一个覆盖部分,在那里我可以使用typescript 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部分中所做的规则覆盖,我最终不得不在JS配置和TS文件覆盖中配置每个ESLint规则。有没有一种方法可以在覆盖中合并父部分的规则,以便它只是添加额外的规则,而不是完全替换它们?

drkbr07n

drkbr07n1#

您可以为 *.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"
            }
        }
    ]
}
anhgbhbe

anhgbhbe2#

我使用eslint7.32.0,根规则也适用于覆盖部分中定义的文件类型。

相关问题