ESLint v8.0.0中的新内容

115 阅读3分钟

上周,技术指导委员会(TSC)开会确定了ESLint v8.0.0的功能。 即使在v8.0.0工作开始的时候,这个功能集还没有被锁定,所以这代表了一个重要的里程碑,使我们能够专注于让这个下一个主要版本出货。你可以在我们的项目板上看到为v8.0.0计划的一切。

v8.0.0的重大变化

在我们向v8.0.0迈进的过程中,以下变化是很重要的,请理解。

放弃对Node.js v10.x、13.x和15.x的支持

Node.js v10.x的使用寿命是2021年4月30日,Node.js v13.x的使用寿命是2020年6月1日,而Node.js v15.x的使用寿命是这个月(2021年6月)。因此,ESLint v8.0.0删除了对所有这三个Node.js版本的支持

移除codeframetable 格式化器

为了减少ESLint的安装规模,我们决定从ESLint的核心中删除codeframetable 格式化。这两个格式化器包括ESLint中其他地方没有使用的依赖。如果你目前正在使用这些格式化器,你需要安装独立的软件包 (eslint-formatter-codeframeeslint-formatter-table)以便与ESLint v8.0.0一起使用。

支持ES2022类字段,顶层await ,以及regexp匹配索引

ESLint v8.0.0支持ES2022,对类字段、顶层await ,以及regexp匹配索引提供了本地支持。

有建议的规则现在需要meta.hasSuggestions 属性

从ESLint v8.0.0开始,提供建议的规则必须包括一个meta.hasSuggestions: true 属性。这使得ESLint能够通过检查规则对象来了解规则的功能是什么。提供建议的规则如果没有meta.hasSuggestions: true ,将导致错误。

可修复的规则现在需要meta.fixable 属性

在ESLint v7.0.0和更早的版本中,可以把规则写成一个函数,而不是一个对象,并且可以在不指定meta.fixable 属性的情况下提供修复功能。从 v8.0.0 开始,ESLint 要求所有提供修复的规则以对象格式指定,并包括meta.fixable: code|whitespace

未使用的禁用指令现在可以修复了

ESLint v8.0.0现在将自动删除未使用的禁用指令,当使用--fix 命令行标志和--report-unused-disable-directives

行注释指令

ESLint v8.0.0现在允许所有以前需要块状注释的指令使用行注释指令

更严格的规则模式验证

随着升级到Ajv 8,ESLint v8.0.0将改进规则模式的错误检测。在Ajv 6中,有几个地方的验证会无声无息地失败,这可能会导致最终用户的错误难以发现。这种更严格的验证将有助于在规则开发过程中尽早发现更多的错误。

删除了无文档的API;删除了CLIEnginelinter

ESLint v8.0.0定义了一个exports 字段,以删除对一些包所访问的无记载的内部API的访问。

作为这一变化的一部分,我们已经删除了被废弃的CLIEngine 类,以鼓励采用替代的ESLint 类。CLIEngine 在2020年被废弃,在我们为ESLint推进更多雄心勃勃的功能时,我们不能继续支持它。

此外,我们正在删除linter 对象,因为Linter 类允许你创建任何数量的实例。

什么时候可以期待ESLint v8.0.0?

我们预计ESLint v8.0.0的第一个测试版将在六月底或七月初发布。届时,我们将收集社区的反馈,并修复任何使人们难以升级的未决问题。第一个测试版的可用性将在本博客和我们的推特账户上公布,所以请继续关注!