
亮点
支持 Import Attributes
我们已更新 ESLint,以完全支持 ECMAScript 2025 Import Attributes 语法。此语法允许模块导入语句和动态导入传递更多信息以及模块说明符。宿主环境可以使用此信息来修改导入行为并支持其他类型的模块。例如,当指定 type: "json"
时,模块被视为 JSON 模块。
import json from "./foo.json" with { type: "json" };
import("foo.json", { with: { type: "json" } });
ESLint 中的更新包括解析,并确保命名约定规则不适用于导入属性键,因为它们由 ECMAScript 规范或宿主环境定义,因此用户无法控制其命名。
请注意,已弃用的格式化规则 将不会更新以支持此语法。如果您仍在使用核心格式化规则,我们建议切换到源代码格式化程序。或者,您可以将核心格式化规则替换为 @stylistic/eslint-plugin-js
中相应的规则。
支持 RegExp Modifiers
我们已更新 ESLint,以完全支持 ECMAScript 2025 正则表达式模式修饰符。此功能允许您在子表达式中更改当前活动的 RegExp 标志。
const regex1 = /^(?i:[a-z])[a-z]$/;
const regex2 = /^[a-z](?-i:[a-z])$/i;
ESLint 中的更新包括解析,并确保与正则表达式相关的规则按预期运行。
改进了配置文件查找性能
在 v9.13.0 中,我们更改了配置文件的查找方式。由于配置文件数据缓存不正确,其中一些更改对 ESLint 的运行时性能产生了负面影响。这在使用默认配置查找算法时尤其明显,据报告 性能下降了 20-30%(通过 --flag unstable_config_lookup_from_file
访问的新算法具有不同的性能特征,并且在我们的测试中没有显示出相同的负面性能影响)。
我们现在修复了默认算法和实验性算法中的配置文件查找缓存行为,因此当您从 v9.13.0 升级时,您应该会获得改进的性能。
功能
3fa009f
feat: 添加对 Import Attributes 和 RegExp Modifiers 的支持 (#19076) (Milos Djermanovic)b0faee3
feat: 为@eslint/js
包添加类型定义 (#19010) (Nitin Kumar)
Bug 修复
24d0172
fix: 为 readFile() 启用重试并发限制 (#19077) (Nicholas C. Zakas)b442067
fix: 避免在遍历期间目录被删除时崩溃。 (#19067) (Nicholas C. Zakas)d474443
fix: 避免在处理 glob 时出现调用堆栈溢出 (#19035) (Livia Medeiros)
文档
151c965
docs: 更新context.languageOptions.parser
描述 (#19084) (Nitin Kumar)dc34f94
docs: 更新 README (GitHub Actions Bot)f16e846
docs: 更新 README (GitHub Actions Bot)ee0a77e
docs: 将链接从 @types/eslint 更改为 lib/types (#19049) (Karl Horky)50f03a1
docs: 澄清配置迁移指南中的全局忽略 (#19032) (Milos Djermanovic)
构建相关
37c9177
build: 更新@wdio/*
依赖项 (#19068) (Francesco Trotta)35a8858
build: 排除有缺陷的依赖版本 (#19065) (Francesco Trotta)
杂项
f36cb16
chore: 升级 @eslint/js@9.14.0 (#19086) (Milos Djermanovic)28be447
chore: @eslint/js 发布 package.json 更新 (Jenkins)f48a2a0
test: 添加带有 RegExp Modifiers 的no-invalid-regexp
测试 (#19075) (Milos Djermanovic)425202e
perf: 修复配置加载器中的缓存 (#19042) (Milos Djermanovic)3d44b3c
ci: 在 Node.js 23 中运行测试 (#19055) (Francesco Trotta)7259627
test: 确保check-emfile-handling.js
中的 tmp 目录清理 (#19036) (Livia Medeiros)