如何在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" } }
问题总结
- ESLint对已在配置文件中纳入的部分文件报错
- ESLint能正常检测配置文件中未纳入的文件
内容的提问来源于stack exchange,提问作者Mike Lischke
相关产品推荐
相关产品推荐

