开源中国-最新资讯 ( ) • 2024-04-09 12:52

ESLint v9.0.0 已正式发布。这是 ESLint 的一次重大版本升级,主要更新内容如下:

  • 安装:可以通过npm i [email protected] --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-jsdocrequire-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中,所有条目均有效,并允许为不同的导入名称指定不同的错误消息。同时,该规则还新增了allowImportNamesallowImportNamePattern选项,提供更大的灵活性。

    • no-unused-vars规则:对varsIgnorePattern选项的使用范围进行了调整,不再适用于捕获的错误变量。同时,caughtErrors选项的默认值从"none"更改为"all",以更好地处理未使用的变量情况。此外,还新增了ignoreClassWithStaticInitBlock选项,以忽略具有静态初始化块的类中的未使用变量。

    • no-useless-computed-key规则:将enforceForClassMembers选项的默认值从false更改为true,旨在减少重构过程中可能产生的误导性注释。当此选项设置为true时,规则将禁止在不会发生穿透的情况下使用穿透注释。

  • 引入配置检查器:一个可视化工具,帮助理解和检查 ESLint 配置文件。

详情