广泛使用的 JavaScript 和 TypeScript 代码检查工具 ESLint 发布了 10 版本,这是自引入 flat config 配置体系以来最重要的一次更新。该版本完成了多年逐步推进的架构调整,移除了长期弃用的 API,并带来一系列面向插件作者和 monorepo 团队的开发体验改进。
v10 中最关键的变化,是彻底移除了旧版 eslintrc 配置系统。自 v9 起,flat config(eslint.config.js)已成为默认配置方式,但旧格式仍可通过 LegacyESLint 使用。如今,这一兼容层已完全删除。Linter 上的 defineParser()、defineRule()、defineRules() 和 getRules() 方法均被移除,shouldUseFlatConfig() 也将始终返回 true。仍在使用 .eslintrc 文件的团队,在升级前必须完成迁移。
官方提供的迁移工具可以简化这一过程:
npx @eslint/migrate-config .eslintrc.json该命令会生成一个 eslint.config.mjs 文件,开发者可以在此基础上进行审查和调整。官方迁移指南中详细列出了所有重大变更,DEV Community 上也有第三方实践文章对升级步骤进行了更细致的说明。
在配置体系清理之外,v10 还改变了 ESLint 查找配置文件的方式。不再从当前工作目录开始查找,而是从每个被 lint 文件所在的目录向上查找。这一变化对于 monorepo 场景尤为重要,不同子包可以拥有各自的规则配置,同时也更符合开发者的直觉预期。
JSX 引用追踪是另一个重要更新。此前,ESLint 并不会将 JSX 中的标识符识别为变量引用,这会导致 no-unused-vars 等规则产生误报:仅在 JSX 中使用的组件会被错误标记为“未使用”。过去需要借助如 @eslint-react/jsx-uses-vars 这类插件进行修复,如今已不再需要。
RuleTester API 也得到了增强,新增 requireMessage、requireLocation 和 requireData 等断言选项。这些能力使插件作者能够编写更严格的测试,确保规则行为与提示信息保持一致。同时,测试失败时的堆栈信息现在会包含出错用例的索引和文件位置,从而减少在大型规则测试集中定位问题的时间。
在运行环境方面,Node.js 支持范围调整为 ^20.19.0 || ^22.13.0 || >=24,完全移除了对 v21.x 和 v23.x 的支持。eslint:recommended 配置也进行了更新,新增了一些规则,这意味着升级后,现有代码库中可能会出现新的 lint 报告。
生态兼容性方面也出现了一些问题。eslint-plugin-react 在 GitHub issue 中指出,其 peerDependencies 尚未声明支持 ESLint 10,导致不少 React 开发者在安装时遇到冲突。类似问题也出现在 eslint-config-next 上,该配置是 Next.js 默认提供的 ESLint 配置,截至 2026 年 3 月仍未解决。
社区反馈也反映出一定的迁移成本。在 Reddit r/javascript 的讨论中,有开发者表示:
老实说,flat config 的理念是好的,但迁移体验很糟糕。每个插件对 flat config 的支持都不太一样,基本就是不停试错。
与此同时,JavaScript 工具链的竞争也在持续加剧。基于 Rust 的替代方案,如 Biome 和 Oxlint,正凭借更高的性能逐步获得关注。有开发者在 Reddit 中表示:
我已经转到 Biome 了,规则覆盖可能不到 100%,但大概 95% 已经够用,性能优势足以弥补 ESLint 的开销。
根据 Oxc 官方基准测试,Oxlint 在不同 CPU 核心数下可实现比 ESLint 快 50 到 100 倍的 lint 速度,而 Biome 则将 lint 和格式化整合在同一个工具中。不过,这类工具的权衡点在于规则覆盖度,目前仍无法完全匹配 ESLint 的完整生态。
ESLint 是一个开源、可扩展的 JavaScript 和 TypeScript 代码检查工具,由 Nicholas C. Zakas 于 2013 年创建,目前由 OpenJS Foundation 维护,采用 MIT 许可证,每周 npm 下载量超过 1.2 亿次。
在 v10 发布后,10.0.1 和 10.0.3 已陆续发布用于修复问题,10.1.0 也已于 2026 年 3 月 20 日上线。
原文链接:





