查看原文
其他

前端快讯|ESLint v9.0.0 重大更新!

小懒 FED实验室 2024-02-12
关注下方公众号,获取更多热点资讯

近日,ESLint 官网博客更新 ESLint v9.0.0 版本发布计划。本文将带您了解 v9.0.0 中即将出现的重大变更,以便您能更好地为变更做好准备,并了解为何需要进行变更。

1.开发计划

由于计划在 v9.0.0 中进行大量的破坏性更改,ESLint 团队决定分两个阶段开发此版本。

  • Alpha:该版本主要包括会对现有用户造成最大干扰的更改。尽早发布这些更改将使 ESLint 团队能够尽早的收集反馈,确保一切按计划进行。
  • Beta:该版本由剩余任务和较小的破坏性更改组成,受影响的用户较少。

每个阶段的具体细节将在本文中列出。请注意,如果在 Alpha 阶段完成了计划在 Beta 阶段中进行的任务,那么它们将会在 Alpha 版本中发布。

在 Beta 版本验证通过后,将发布一个或多个发布候选版本,继续修复错误并处理兼容性问题。

2.v9.0.0-alpha 中的重大变更

计划在 Alpha 版本中进行以下更改,这些更改具有重大的破坏性。

2.1.扁平化配置现在是默认配置,并有一些变化

从 v9.0.0 开始,Flat config 将成为 ESLint 的默认配置格式,eslintrc 将被弃用(将在 v10.0.0 版本中移除),但仍可正常使用。要继续使用 eslintrc 配置文件,需要将 ESLINT_USE_FLAT_CONFIG 环境变量设置为 false。

该版本还将删除 flat config 中的 "eslint:recommended" 和 "eslint:all" 配置字符串。在最初版本的 flat config 中,ESLint 允许你直接将这些字符串放入配置数组,但在 v9.0.0 中,你需要使用 @eslint/js 包中的相应配置。

2.2.放弃对 Node.js < v18.18.0 和 v19.x 版本的支持

截至本文发布之时,Node.js v20.x 已是 LTS 版本,因此我们将放弃对 v18.18.0 之前的所有 Node.js 版本以及 v19.x 版本的支持。前端快讯|ESLint 计划在 v9.0.0 中放弃对 Node.js < 18 和 Node.js 19 的支持

2.3.移除除 stylish、html、json 和 json-with-meta 之外的所有格式化程序

为了减小 ESLint 的安装包大小,ESLint 团队决定从 ESLint 的核心中删除大部分格式化程序。将被删除的格式化程序有:

  • checkstyle
  • compact
  • jslint-xml
  • junit
  • tap
  • unix
  • visualstudio

如果您目前正在使用这些格式化程序,您需要安装独立的包才能在 ESLint v9.0.0 中使用它们。前端快讯|ESLint 已决定弃用核心格式化规则

2.4.移除 valid-jsdoc 和 require-jsdoc 规则

为了进一步减小 ESLint 的安装包大小,ESLint 团队决定删除 valid-jsdoc 和 require-jsdoc 规则。自从 ESLint v5.10.0 以来,这些规则已被弃用,并且删除它们可以让同时删除另一个依赖项(doctrine)。ESLint 团队推荐使用eslint-plugin-jsdoc 插件代替。

2.5.移除 context 和 SourceCode 中的废弃方法

将从 context 中移除大量已废弃的方法,并用SourceCode上的方法来替换它们。此外,我们还将删除已弃用的SourceCode#getComments()方法。

2.6.更新 eslint:recommended 配置

eslint:recommended 配置将更新,包括 ESLint 团队认为重要的新规则,并删除已弃用的规则。

2.7.规则编写方式的更改

为了整理并使规则更易于使用,ESLint 团队进行了两个更改:

  • Function-style 规则在 v9.0.0 中将停止工作。Function-style规则是通过从文件中导出一个函数而不是导出一个具有create() 方法的对象创建的规则。
  • 当规则没有指定 meta.schema 时,将应用默认模式[]。这意味着没有指定模式的规则将被认为没有选项,这反过来意味着如果提供了选项,则验证将失败。

2.8.--quiet 选项的性能更好

--quiet 选项会在 ESLint 控制台中隐藏所有警告。在 v9.0.0,我们也不执行任何设置为 "警告 "的规则,从而提高了性能。

2.9.在没有文件参数的情况下运行 eslint

从 v9.0.0 开始,如果您使用的是扁平化配置,并且在 CLI 中没有传递任何文件参数,则 CLI 将默认对当前目录进行代码检查,这意味着您可以键入 npx eslint 而不传递任何参数,它将正常工作。对于 eslintrc,缺少文件参数将导致错误。

3.v9.0.0-beta中的重大更改

Beta 版计划进行以下更改,这些更改具有重大的破坏性。

3.1.移除 CodePath#currentSegments

为了推进语言插件工作,将移除 CodePath#currentSegments。这仅影响使用代码路径分析的规则。

3.2.只有包含严重性的配置注释才会覆盖严重性

由于内联配置 /*eslint no-undef: warn */ 这样的注释将自动删除配置文件中相应规则的任何设定选项。在v9.0.0中,这类注释将仅更改规则的严重性,不会影响其他选项。

3.3.新的 no-new-native-nonconstructor 规则替换了 no-new-symbol

no-new-symbol 规则旨在防止在您的代码中使用 new Symbol(),因为 Symbol 不是构造函数。还有其他一些全局函数也没有构造函数,因此我们决定创建一个新规则 no-new-native-nonconstructor,来涵盖所有这些情况。这个新规则将被添加到eslint:recommended 中,no-new-symbol 将被弃用。

3.4.对 RuleTester 的更改

RuleTester 类将进行更新,以检测更多规则问题:

  • 如果多个建议修复程序具有相同的消息,将发生失败。
  • 如果一个建议包含解析错误,将发生失败。
  • 将添加几个额外的断言来捕获无效或有错误的测试用例。

4.ESLint v9.0.0 预计发布时间

ESLint 团队预计 ESLint v9.0.0 的第一个 Alpha 版本将于 12 月或 1月 发布,具体取决于他们在任务上的进展。到那时,团队将收集社区的反馈并解决任何使人们难以升级的未解决问题。团队希望在 Alpha 版本发布几个月后发布 Beta 版本,并在此之后的几个月发布最终版本。所有版本的可用性将在官方博客、官推上公布,请大家密切关注!

大家都在看


继续滑动看下一个

前端快讯|ESLint v9.0.0 重大更新!

小懒 FED实验室
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存