格式化器重大变更

在下一个 ESLint 小版本发布中(由于上个月错误地将 0.6.2 推送为 0.7.0,因此将是 0.7.1),格式化器的操作方式将发生重大变更。

变更内容

在此之前,格式化器会接收一个 config 对象,其中包含每个规则(错误或警告)的计算严重程度,以便可以输出此信息。在 0.7.1 版本中,严重程度现在将表示在每个消息本身上,作为一个 severity 属性。所有内置的格式化器都已更新以反映此更改。

为何变更?

存在一些与规则输出不正确严重程度相关的错误。最近的一个是 #983,这导致发现传递的 config 对象没有考虑到内联规则严重程度的更改。#985 实施了一项更改,将消息的严重程度直接放在消息对象上,这意味着不再需要 config 对象。

最初的计划是在 0.7.1 版本中弃用格式化器中 config 对象的使用,并在 0.8.0 版本中删除它。然而,一项重大的重构 (#1013) 导致了职责分离,使得保持此功能原样变得极其困难。

您需要做什么

如果您为 ESLint 编写了自定义格式化器,则需要更改它以反映此更改。以前,您可能是这样计算严重程度的:

var severity = config.rules[message.ruleId][0] || config.rules[message.ruleId];

为了与 0.7.1 版本配合使用,您必须使用消息本身的 severity 属性

var severity = message.severity;

如果您希望您的格式化器能够与旧版本和新版本的 ESLint 一起使用,那么您需要结合这些计算严重程度的方法,例如:

var severity = "severity" in message ? message.severity :
(config.rules[message.ruleId][0] || config.rules[message.ruleId]);

已知的受影响模块

以下是在 npm 上可用的受此更改影响的模块列表:

请注意,此列表并非详尽无遗。您应该检查您可能正在使用的任何非捆绑的 ESLint 格式化器的兼容性。

有问题吗?

如果您对此更改有进一步的疑问,请打开一个 讨论 或访问我们的 Discord 服务器

最新的 ESLint 新闻、案例研究、教程和资源。

Evolving flat config with extends
5 分钟阅读

通过 extends 演进扁平配置

您的 eslint.config.js 文件现在可以使用 extends 来简化您的配置。

ESLint v9.22.0 released
1 分钟阅读

ESLint v9.22.0 发布

我们刚刚推送了 ESLint v9.22.0,这是一个 ESLint 的小版本升级。此版本添加了一些新功能并修复了先前版本中发现的几个错误。

ESLint v9.21.0 released
2 分钟阅读

ESLint v9.21.0 发布

我们刚刚推送了 ESLint v9.21.0,这是一个 ESLint 的小版本升级。此版本添加了一些新功能并修复了先前版本中发现的几个错误。