4 月 5 日,ESLint 正式发布了 v9.0.0,这是 ESLint 的一次重大版本升级。此版本的更新如下:
- 安装:可以通过 npm i eslint@9.0.0 --save-dev 命令进行更新升级。
- 迁移指南:由于存在大量更改,可以根据迁移指南[1]进行升级。
- Node.js 版本支持:目前,Node.js v20.x 是 LTS 版本,因此不再支持 v18.18.0 以及 v19.x 之前的所有 Node.js 版本。
- 默认配置格式:Flat config 现在是 ESLint 的默认配置格式,eslintrc 已正式弃用。
- 删除部分格式化程序:包括 checkstyle、compact、jslint-xml、junit、tap、unix、visualstudio,后续需要通过独立安装包来使用。
- 删除规则:删除了 valid-jsdoc 和 require-jsdoc,建议改用 eslint-plugin-jsdoc插件。
- 更新推荐规则:eslint:recommended 配置已更新,包括重要的新规则,并删除已弃用和不太重要的规则。
- 新增规则:新增 no-useless-assignment 规则,用于捕获已为变量分配了值但该值从未被使用的情况。
- 全新 API:在主入口点新增函数 loadESLint()。可以使用此函数来获取 ESLint 类(以前的 FlatESLint 类)或 LegacyESLint 类(以前的 ESLint 类),从在扁平配置和 eslintrc API 之间进行切换。
- 更严格的 RuleTester 验证:包括确保消息无未替换占位符、建议必须改变代码、测试用例输出与代码不同、错误对象指定消息或ID、建议对象需含描述或ID及输出,以及测试对象的属性类型符合预期,并避免重复测试。
- 更好的作用域分析:更新了 eslint-scope 的行为,修复了一些长期存在的问题。
- 更新现有规则:
complexity 规则:现在纳入了可选链和解构模式以及参数中的默认值,以提供更全面的代码复杂度评估。
no-fallthrough规则:新增了reportUnusedFallthroughComment选项,以提供更多关于未使用落体注释的反馈信息。
no-inner-declarations规则:的默认行为已更新。在v8.x版本中,它曾将块内部定义的函数视为错误,但随着 ES 2015 对块作用域函数声明的明确定义,现在默认不再对此发出警告。
no-misleading-character-class规则:改进了问题标识,现在将仅高亮显示正则表达式中有问题的字符,而不是整个表达式。
no-restricted-imports规则:在路径处理上进行了调整。在v8.x中,仅最后一个具有相同name属性的路径条目会生效;而在v9.0.0中,所有条目均有效,并允许为不同的导入名称指定不同的错误消息。同时,该规则还新增了allowImportNames和allowImportNamePattern选项,提供更大的灵活性。
no-unused-vars规则:对varsIgnorePattern选项的使用范围进行了调整,不再适用于捕获的错误变量。同时,caughtErrors选项的默认值从"none"更改为"all",以更好地处理未使用的变量情况。此外,还新增了ignoreClassWithStaticInitBlock选项,以忽略具有静态初始化块的类中的未使用变量。
no-useless-computed-key规则:将enforceForClassMembers选项的默认值从false更改为true,旨在减少重构过程中可能产生的误导性注释。当此选项设置为true时,规则将禁止在不会发生穿透的情况下使用穿透注释。
- 引入配置检查器: 一个可视化工具,帮助理解和检查 ESLint 配置文件。
图片
- 其他更新:
38 个重大更新;
21 个新增功能;
14 个 Bug 修复;
80 处文档更新;
11 个构建更新;
62 个其他更新;
ESLint v9.0.0 更新详情:https://eslint.org/blog/2024/04/eslint-v9.0.0-released/
[1]迁移指南: https://eslint.org/docs/latest/use/migrate-to-9.0.0