ESLint v9.0.0 正式发布
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 配置文件。
详情。