雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

ESLint9.0 正式发布 带来重大更新和破坏性更改

2024-06-17 100

ESLint是一个插件化的代码检测工具,它可以静态分析代码,快速发现问题。它可以内置在大多数文本编辑器中,开发者可以将 ESLint 作为 DevOps 的一部分来运行。下面是最近几次发布的版本主要特性回顾:

v7.0.0 - 放弃对 Node.js 8 的支持,改进开发者体验。 v8.50.0 - 弃用 no-new-object 规则,取而代之的是新的 no-object-constructor 规则。 v8.56.0 - 报告未使用的禁用指令时支持自定义严重程度。 v8.0.0 - 默认解析器和所有核心规则完全支持 ES2022 类的公共、私有方法及私有字段。

2023年09月23日,在 ESLint v8.50.0 版本发布时,ESLint 官推发布消息:ESLint 计划在 v9.0.0 中放弃对 Node.js < 18 和 Node.js 19 的支持。

2024年04月05日,经过近半年的迭代,ESLint v9.0.0 正式发布,下面来看看本次版本带来的重点更新。

放弃对 Node.js < v18.18.0、v19 的支持

随着 Node.js v20.x 将成为 LTS 版本,ESLint 将不再支持 v18.18.0 之前的所有 Node.js 版本以及 v19.x。

默认启用 Flat config

Flat config 现在是 ESLint 的默认配置格式,eslintrc 已被正式弃用。要继续使用 eslintrc 配置文件,需要将 ESLINT_USE_FLAT_CONFIG 环境变量设为 false。

这一变更会影响到用户、插件开发人员和集成人员,因为 ESLint 的许多方面都必须为此做出改变。此版本还引入了配置检查器,可使用 --inspect-config 在命令行上启动。

删除众多 formatter

删除了除 stylish、html、json 和 jsonon-with-meta 以外的所有 formatter:

checkstyle compact jslint-xml junit tap unix visualstudio

如果您目前正在使用这些格式化器,则需要安装独立软件包,以便与 ESLint v9.0.0 一起使用。

删除 valid-jsdoc 和 require-jsdoc 规则

ESLint 移除了 valid-jsdoc 和 require-jsdoc。建议使用 eslint-plugin-jsdoc 插件。

删除 context and SourceCode 中已废弃的方法

正如在九月份宣布的那样,ESLint 已经删除了上下文中的大量废弃方法,并用源代码中的方法取而代之。

eslint:recommended 更新

更新了 eslint:recommended 配置,以纳入 ESLint 认为重要的新规则,并删除过时和不太重要的规则。

新规则:no-useless-assignment

ESLint v9.0.0 引入了一条新规则 --no-useless-assignment,旨在捕捉为变量赋值但该值从未被使用的情况。例如:

let id = 1234;      // 1234 is never used
id = calculateId();

新 API:loadESLint()

ESLint 现在从其主入口导出了一个新函数 loadESLint()。集成程序可使用该函数获取 ESLint 类(原 FlatESLint 类)或 LegacyESLint 类(原 ESLint 类),从而在 flat config 和 eslintrc API 之间轻松切换。

不允许同一规则包含多个 eslint 注释

在 ESLint v8.x,如果被标记的文件包含多个针对同一规则的 /* eslint */ 配置注释,最后一个注释将被应用,而其他注释将被静默忽略。

在 ESLint v9.0.0 中,第一个配置注释将被应用,而其他配置注释将被报告为 lint 错误。

--quiet 选项运行更高效

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

未使用的禁用指令默认会导致警告

一直以来,ESLint 都能标记未使用的禁用指令。在此版本中,默认启用了对未使用禁用指令的警告。你可以在配置文件中使用 linterOptions.reportUnusedDisableDirectives 或在命令行中使用 --report-unused-disable-directives-severity 来修改该值。

最后

ESLint v9.0.0 是一次重大版本升级。该版本增加了一些新功能,带来 38+ 破坏性更改、 20+ 特性更新以及相关问题修复。需要升级的同学可以参考官网提供的集成指南。

更新于:5个月前
赞一波!2

文章评论

评论问答