你还在用原来的oa系统吗 (你还在用你的旧手机吗)

你还在用之前的牙刷吗,你还在用新的电脑吗

重要的变化和改进,为 JavaScript 代码的静态分析带来了新的功能和更强的灵活性。以下是此次更新的主要内容:

安装升级

现有的 ESLint 用户可以通过以下命令将 ESLint 升级到最新版本:

npm i eslint@9.0.0 --save-dev

迁移指南

由于此次更新涉及大量更改,ESLint 团队提供了一份详细的 迁移指南[1] ,以帮助用户平滑过渡到新版本。

Node.js 版本支持

随着 Node.js v20.x 成为新的长期支持(LTS)版本,ESLint v9.0.0 决定不再支持 v18.18.0 以及 v19.x 之前的 Node.js 版本。

默认配置格式变更

ESLint 的默认配置格式已从 .eslintrc 变更为扁平化的配置文件(Flat config),.eslintrc 配置文件已正式弃用。

格式化程序的移除

一些格式化程序,包括 checkstylecompactjslint-xmljunittapunixvisualstudio 等,已被移除。用户需要通过独立安装相应的包来继续使用这些格式化程序。

规则的更新与新增

  • 移除了 valid-jsdoc 和 require-jsdoc 规则,推荐使用 eslint-plugin-jsdoc 插件替代。
  • eslint:recommended 配置已更新,引入了新的重要规则,并移除了一些已弃用或不太重要的规则。
  • 新增了 no-useless-assignment 规则,用于检测无用的变量赋值操作。

全新 API

在主入口点新增了 loadESLint() 函数,它允许用户获取 ESLint 类(即以前的 FlatESLint 类)或 LegacyESLint 类(即以前的 ESLint 类),以在扁平配置和 eslintrc API 之间进行切换。

作用域分析的改进

更新了 eslint-scope 的行为,修复了一些长期存在的问题,提供了更好的作用域分析。

现有规则的更新

  • complexity 规则现在包括了可选链、解构模式以及参数中的默认值,以提供更全面的代码复杂度评估。
  • no-fallthrough 规则新增了 reportUnusedFallthroughComment 选项。
  • no-inner-declarations 规则的默认行为已更新,现在默认不再对块内函数声明发出警告。
  • no-misleading-character-class 规则改进了问题标识,现在将仅高亮显示正则表达式中有问题的字符。
  • no-restricted-imports 规则在路径处理上进行了调整,现在允许为不同的导入名称指定不同的错误消息,并新增了 allowImportNames 和 allowImportNamePattern 选项。
  • no-unused-vars 规则对 varsIgnorePattern 选项的使用范围进行了调整,新增了 ignoreClassWithStaticInitBlock 选项,以忽略具有静态初始化块的类中的未使用变量。
  • no-useless-computed-key 规则将 enforceForClassMembers 选项的默认值从 false 更改为 true,以减少重构过程中可能产生的误导性注释。

引入配置检查器

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

更新详情

欲了解更多关于 ESLint v9.0.0 的更新详情,可以访问官方博客文章: ESLint v9.0.0 Released[2]

参考资料

[1] 迁移指南: https://eslint.org/docs/latest/use/migrate-to-9.0.0

[2] ESLint v9.0.0 Released: https://eslint.org/blog/2024/04/eslint-v9.0.0-released/