如何配置ESLint扁平配置仅分析TypeScript文件并启用严格规则?
问题解决:让ESLint仅分析TypeScript文件并应用strict规则
正确配置示例
调整你的eslint.config.js,通过全局排除非TypeScript文件+精准绑定规则的方式解决问题:
import tseslint from "typescript-eslint"; import globals from "globals"; export default [ // 全局排除不需要分析的文件 { ignores: ["**/*.js", "**/*.jsx", "**/*.mjs", "**/*.cjs"] }, // 仅对.ts文件应用typescript-eslint strict规则集 { files: ["**/*.ts"], extends: [...tseslint.configs.strict], languageOptions: { parser: tseslint.parser, globals: globals.node // 根据项目环境调整,比如浏览器环境用globals.browser } } ];
问题根源
ESLint扁平配置默认会扫描所有符合默认扩展名的文件(包括.js、.jsx等)。即便你给某组配置指定了files: ["**/*.ts"],如果没有明确排除其他文件,ESLint内置的JavaScript规则仍会作用在JS文件上,触发报错。通过ignores全局排除非目标文件,就能彻底避免ESLint处理这些文件。
关于ESLint扁平配置的文件分组与处理流程
文件分组逻辑
扁平配置是一个配置对象数组,每个对象通过files和ignores属性实现文件分组:
files:指定该配置要作用的文件路径(支持glob通配符)ignores:指定该配置要排除的文件路径(优先级高于files)
你可以根据文件类型、目录结构拆分多组配置,比如给src目录下的业务代码用一套规则,给测试文件用另一套规则,完全按需定制。
核心处理流程
- 文件扫描与匹配:ESLint会遍历项目中所有文件(默认跳过node_modules等目录),对每个文件逐一检查数组中的配置对象:
- 若文件匹配当前配置的
ignores,直接跳过该配置 - 若文件匹配当前配置的
files,则该配置会被纳入该文件的最终配置集合
- 若文件匹配当前配置的
- 配置合并:单个文件匹配到的所有配置对象,会按数组顺序合并:
- 后序配置会覆盖前序的同名规则、解析器设置等
extends引入的规则会先完成合并,再处理当前配置的自定义规则
- 规则执行:合并后的最终配置会应用到该文件,执行代码检查。
简言之,扁平配置的逻辑是按文件匹配配置,按顺序合并规则,相比旧版层级配置,更直观且灵活度更高。
内容的提问来源于stack exchange,提问作者Pilaf T. Pilafian
相关产品推荐
相关产品推荐

