You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ESLint中纳入项目tsconfig.json未包含的文件?

ESLint扁平配置与TypeScript配置冲突问题

需求与配置方案

我希望在ESLint扁平配置中覆盖测试文件、构建脚本等,但不想将这些文件添加到项目主配置文件tsconfig.json中,因此创建了独立的eslint.tsconfig.json文件,继承主配置并扩展包含范围:

{
    "extends": "./tsconfig.json",
    "include": [
        "build",
        "src",
        "tests",
        "vitest.config.ts",
        "eslint.config.mjs"
    ]
}

随后在ESLint扁平配置中引入该文件:

import eslint from "@eslint/js";
import tslint from "typescript-eslint";
import stylistic from "@stylistic/eslint-plugin";
import jsdoc from "eslint-plugin-jsdoc";
import preferArrow from "eslint-plugin-prefer-arrow";
import importPlugin from "eslint-plugin-import";

export default tslint.config(
    eslint.configs.recommended,
    ...tslint.configs.strictTypeChecked,
    ...tslint.configs.stylisticTypeChecked,
    jsdoc.configs["flat/recommended"],
    {
        // 必须单独放在一个对象中以规避ESLint解析器的bug
        ignores: ["src/generated/*"],
    },
    {
        plugins: {
            "@stylistic": stylistic,
            "jsdoc": jsdoc,
            "prefer-arrow": preferArrow,
            "import": importPlugin,
        },
        languageOptions: {
            parser: tslint.parser,
            parserOptions: {
                project: "./eslint.tsconfig.json",
                tsconfigRootDir: import.meta.dirname,
                createDefaultProgram: true,
                projectService: {
                    allowDefaultProject: ["eslint.config.mjs", "./build/*.ts"],
                },
                sourceType: "module",
            },
        },
        rules: {
        }
    },
);

遇到的问题

  • build/目录下的TS文件仍被ESLint忽略,未按预期被检测
  • 必须将eslint.config.mjs加入allowDefaultProject配置,否则会触发以下解析错误:

Parsing error: /eslint.config.mjs was not found by the project service. Consider either including it in the tsconfig.json or including it in allowDefaultProject.

  • 从eslint.tsconfig.json中移除tests/的包含配置后,tests/下的文件仍会被ESLint检测(已重启VS Code确认配置生效)

项目结构

<root>
    build/
    src/
    tests/
    tsconfig.json
    eslint.tsconfig.json
    eslint.config.mjs
    vitest.config.ts

使用的依赖版本

{
    "devDependencies": {
        "@eslint/js": "9.17.0",
        "@stylistic/eslint-plugin": "2.12.1",
        "@stylistic/eslint-plugin-ts": "2.12.1",
        "@types/eslint__js": "8.42.3",
        "@typescript-eslint/eslint-plugin": "8.18.1",
        "@typescript-eslint/parser": "8.18.1",
        "eslint": "9.17.0",
        "eslint-plugin-import": "2.31.0",
        "eslint-plugin-jsdoc": "50.6.1",
        "eslint-plugin-prefer-arrow": "1.2.3",
        "typescript": "5.7.2",
        "typescript-eslint": "8.18.1",
        "vitest": "2.1.8"
    }
}

问题总结

  1. ESLint对已在配置文件中纳入的部分文件报错
  2. ESLint能正常检测配置文件中未纳入的文件

内容的提问来源于stack exchange,提问作者Mike Lischke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:08:10