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

如何将TypeScript-ESLint规则仅应用于TypeScript文件?

正确配置ESLint限定范围规则(Monorepo场景)

错误原因

你遇到的ConfigError是因为直接在自定义文件范围的配置块中展开tseslint.configs.recommended时,该推荐配置本身已包含files字段,导致同一个配置对象内出现重复的文件匹配规则,触发ESLint的配置校验错误。

解决方案

采用ESLint扁平配置(v9+),将Node端JS文件和TypeScript文件的规则拆分为两个独立的配置块,避免规则范围冲突。以下是完整配置示例:

1. 安装依赖

确保已安装最新版相关包:

npm install eslint @eslint/js typescript-eslint eslint-plugin-n typescript --save-dev

2. 编写eslint.config.js配置文件

import js from '@eslint/js';
import tseslint from 'typescript-eslint';
import nodePlugin from 'eslint-plugin-n';

export default tseslint.config(
  // 配置1:仅针对Node端JS文件(Jest/Rollup/Webpack配置等)
  {
    files: ['**/*.js', '**/*.cjs'],
    ignores: ['node_modules/**', 'dist/**', 'packages/*/dist/**'],
    plugins: {
      n: nodePlugin,
    },
    rules: {
      ...js.configs.recommended.rules,
      ...nodePlugin.configs.recommended.rules,
      // 可添加自定义Node规则,比如:
      'n/no-unpublished-require': 'off'
    },
    languageOptions: {
      ecmaVersion: 'latest',
      sourceType: 'module',
      globals: {
        node: true,
      },
    },
  },

  // 配置2:仅针对TypeScript文件
  tseslint.configs.recommended,
  {
    files: ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'],
    ignores: ['node_modules/**', 'dist/**', 'packages/*/dist/**'],
    languageOptions: {
      parserOptions: {
        // Monorepo场景建议用单独的tsconfig.eslint.json管理所有TS文件
        project: './tsconfig.eslint.json',
        tsconfigRootDir: import.meta.dirname,
      },
    },
    rules: {
      // 自定义TS规则,比如:
      '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
      '@typescript-eslint/no-explicit-any': 'warn'
    },
  }
);

3. Monorepo专属调整

如果你的项目是Monorepo结构(如packages/*),建议创建tsconfig.eslint.json统一管理TS校验范围:

{
  "extends": ["./packages/*/tsconfig.json"],
  "include": ["packages/**/*.ts", "packages/**/*.tsx"],
  "exclude": ["node_modules", "dist", "packages/*/dist"]
}

验证配置

运行以下命令分别检查JS和TS文件,确认规则仅应用于目标文件:

# 检查JS配置文件
npx eslint packages/*/webpack.config.js
# 检查TS文件
npx eslint packages/*/src/**/*.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:40:03