
变更内容
在此之前,格式化器会接收一个 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 服务器。