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

ESLint Flat Config(TypeScript)异常扫描未配置文件问题求助

ESLint扫描未配置的built目录文件导致规则报错问题

问题场景

我在使用ESLint搭配TypeScript时,编写了如下eslint.config.mjs配置文件:

import importPlugin from "eslint-plugin-import";
import js from "@eslint/js";
import ts from 'typescript-eslint';

export default ts.config({
    files: ["src/**/*.ts"],
    extends: [
        js.configs.recommended,
        ...ts.configs.recommended,
        importPlugin.flatConfigs.recommended,
        importPlugin.flatConfigs.typescript,
    ],

    languageOptions: {
        ecmaVersion: 5,
        sourceType: "script",

        parserOptions: {
            tsconfigRootDir: ".",
            project: ["./tsconfig.json"],
        },
    },

    rules: {/* 此处省略自定义规则 */}
});

执行eslint .命令后出现如下错误:

<PROJECT-ROOT>/built/index.js
  <row>:<col>  error    Definition for rule '@typescript-eslint/no-unnecessary-condition' was not found           @typescript-eslint/no-unnecessary-condition
  <row>:<col>  warning  Unused eslint-disable directive (no problems were reported from 'no-constant-condition')

(and non-problematic warnings for src/**/*.ts)

明明配置了files: ["src/**/*.ts"],ESLint却还是扫描了./built/index.js文件,导致TypeScript专属规则在JS文件上报错。尝试添加ignores: ["built/"]、"built/*"等多种忽略配置均无效。

问题原因

ESLint扁平配置中,extends引入的配置(比如js.configs.recommended)自带默认的文件匹配规则,会匹配所有.js文件——这就导致即使主配置指定了只扫描src/**/*.ts,扩展的JS规则集仍会触发对built/index.js的扫描。而该文件未使用TypeScript解析器,自然找不到@typescript-eslint/xxx这类规则,从而报错。

解决方案

将配置拆分为数组形式,把全局忽略规则、TypeScript文件规则、JS文件规则(如果需要)分开定义,确保规则只会应用到对应类型的文件上:

import importPlugin from "eslint-plugin-import";
import js from "@eslint/js";
import ts from 'typescript-eslint';

export default [
  // 全局忽略规则,放在最前面优先生效
  {
    ignores: ["built/**/*"]
  },
  // 仅针对TypeScript文件的配置
  {
    files: ["src/**/*.ts"],
    extends: [
      js.configs.recommended,
      ...ts.configs.recommended,
      importPlugin.flatConfigs.recommended,
      importPlugin.flatConfigs.typescript,
    ],
    languageOptions: {
      ecmaVersion: 5,
      sourceType: "script",
      parserOptions: {
        tsconfigRootDir: ".",
        project: ["./tsconfig.json"],
      },
    },
    rules: {/* 自定义TypeScript规则 */}
  },
  // 如果有需要扫描的JS文件,单独配置(不引入TypeScript规则)
  {
    files: ["src/**/*.js"],
    extends: [
      js.configs.recommended,
      importPlugin.flatConfigs.recommended,
    ],
    languageOptions: {
      ecmaVersion: 5,
      sourceType: "script",
    },
    rules: {/* 自定义JS规则 */}
  }
];

关键说明

  1. 全局忽略优先:把ignores作为独立的配置项放在数组最前面,确保所有后续配置都会遵循该忽略规则,不会扫描built目录下的任何文件。
  2. 规则与文件类型绑定:将TypeScript相关规则仅应用在.ts文件上,JS文件单独配置规则集,避免跨类型文件应用不兼容的规则。

内容的提问来源于stack exchange,提问作者Fine Archs

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:41:13