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

能否不在命令行指定文件,仅通过ESLint配置文件执行代码检查?

问题描述

我的NPM脚本里存在重复的文件路径配置:

"lint": "eslint -c .eslintrc.json --fix src/**/*.ts test/**/*.ts *.ts",
"lint:prod": "eslint -c .eslintrc.prod.json --fix src/**/*.ts test/**/*.ts *.ts",

同时lint-staged配置中也有类似的重复路径。我尝试不在命令行指定路径,让ESLint通过配置文件自动识别要检查的文件,配置如下:

"overrides": [
    {
      "parser": "@typescript-eslint/parser",
      "plugins": [
        "@typescript-eslint"
      ],
      "files": [
        "src/**/*.ts",
        "test/**/*.ts",
        "*.ts"
      ]
    }
  ]

但运行npx eslint -c .eslintrc.json时没有文件被检查,只有在命令行添加路径才会执行检查。我猜测overrides[].files仅用于指定解析器作用的文件,而非ESLint本身要检查的文件。请问ESLint是否支持仅通过配置文件来指定要检查的文件?

解答

ESLint支持通过配置文件指定要检查的文件,但你用错了配置项——overrides[].files确实只是用来限定该段配置规则生效的文件范围,并非用来指定ESLint要扫描的目标文件。

要实现仅通过配置文件指定检查文件,你需要在ESLint配置的根层级使用**include**字段(ESLint v7及以上版本推荐),或者旧版本中的files根字段:

正确配置示例

使用include(推荐方案)

在.eslintrc.json的根层级添加该字段:

{
  "include": [
    "src/**/*.ts",
    "test/**/*.ts",
    "*.ts"
  ],
  "overrides": [
    {
      "parser": "@typescript-eslint/parser",
      "plugins": [
        "@typescript-eslint"
      ],
      "files": [
        "src/**/*.ts",
        "test/**/*.ts",
        "*.ts"
      ]
    }
  ]
}

旧版本ESLint(v7之前)

直接在根层级使用files字段:

{
  "files": [
    "src/**/*.ts",
    "test/**/*.ts",
    "*.ts"
  ],
  "overrides": [
    // 你的覆盖规则配置
  ]
}

额外说明

  • 配置生效后,运行npx eslint -c .eslintrc.json就会自动扫描include/files指定的文件,无需在命令行重复输入路径。
  • 如果同时在命令行指定了路径,命令行的路径优先级会高于配置文件中的include/files。
  • 针对lint-staged,你可以简化配置为"*.ts": "eslint --fix",结合ESLint配置里的include,就能避免重复编写路径。

内容的提问来源于stack exchange,提问作者Josh M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:27:19