亮点
在 v7.3.0 版本发布后不久,我们收到 一个问题,即 eslint-config-airbnb
出现了故障,因为它在规则配置中使用了 Infinity
。Infinity
应该被 规则的选项模式 禁止,但 Ajv 中的一个错误(ESLint 使用的 JSON 模式验证器)在指定 integer
时错误地允许了 Infinity
。这是因为 v7.3.0 版本包含 一项更改,该更改通过序列化规则配置修复了 一个不相关的问题。ESLint 期望规则配置可 JSON 序列化,以确保所有支持的 JSON、YAML 和 JS .eslintrc
格式之间的一致性,并且它在 --cache
和 --print-config
命令行选项中依赖此属性。
将 eslint-config-airbnb
更新为使用 Number.MAX_SAFE_INTEGER
而不是 Infinity
是 理想的解决方案,但这需要花费太长时间。由于这是唯一报告的问题,并且仅限于 eslint-config-airbnb
而不是最终用户的配置,因此我们 实现了一个例外,将 Infinity
替换为 Number.MAX_SAFE_INTEGER
并将其发布在 v7.3.1 中,这使我们能够保留不相关的错误修复。
在 v7.3.1 版本发布后,我们收到了 另一个问题,即 一个 eslint-plugin-unicorn
规则 指导用户使用正则表达式实例,这些实例不可 JSON 序列化。与 eslint-config-airbnb
不同,在 eslint-config-airbnb
中,不可序列化的值仅限于单个依赖项,而 eslint-plugin-unicorn
的最终用户配置包含正则表达式,因此修复所有这些配置是不切实际的。
因此,我们 回滚了原始更改,并在 v7.4.0 版本中发布。我们将寻找其他解决方案。这将为规则配置包含不可 JSON 序列化的值的用户的常规 lint 解除阻碍,尽管在这些情况下,--cache
和 --print-config
命令行选项可能会表现出未定义的行为。ESLint 的未来主要版本将强制规则配置仅包含可 JSON 序列化的值,并且我们预计 RuleTester
的增强功能将帮助规则作者为其模式做好准备。
增强功能
ff5317e
更新:改进 array-callback-return 报告消息(#13395)(Philip (flip) Kromer)51e42ec
更新:向 camelcase 规则添加“ignoreGlobals”选项(修复 #11716)(#12782)(David Gasperoni)0655f66
更新:改进 arrow-body-style 中的报告位置(参考 #12334)(#13424)(YeonJuan)d53d69a
更新:prefer-regex-literal 检测正则表达式字面量(修复 #12840)(#12842)(Mathias Schreck)004adae
更新:将 id-blacklist 重命名为 id-denylist(修复 #13407)(#13408)(Kai Cataldo)
错误修复
ada2c89
修复:在 arrow-parens 中支持 TypeScript 泛型(修复 #12570)(#13451)(Milos Djermanovic)89ee01e
修复:回滚配置克隆(修复 #13447)(#13449)(薛定谔的猫)3f51930
修复: no-extra-parens 中带有成员的新操作符的误报(修复 #12740)(#13375)(YeonJuan)825a5b9
修复:阐明关于隐式忽略行为的文档(修复 #12348)(#12600)(Scott Hardin)
文档
f21bad2
文档:修复 multiline-ternary 中never
的描述(修复 #13368)(#13452)(Milos Djermanovic)0a463db
文档:修复 no-multiple-empty-lines 示例(修复 #13432)(#13433)(Milos Djermanovic)