发布类别: 发布说明 阅读时间 2 分钟
亮点
7.0.0 中有几个重大更改。我们创建了一个 迁移指南 来解释重大更改并描述如何升级。
放弃对 Node.js v8 的支持
Node.js 8 于 2019 年 12 月结束生命周期,我们在此版本中正式放弃对它的支持。
核心规则更改
- 核心中的十个 Node.js/CommonJS 规则已被弃用并移动到 eslint-plugin-node 插件。
- 一些规则已更新以识别 BigInt 字面量,并默认警告更多情况。
eslint:recommended
已更新了一些新规则:no-dupe-else-if
、no-import-assign
和no-setter-return
。
改进的开发者体验
- 默认忽略模式已更新。ESLint 默认不再忽略
.eslintrc.js
和bower_components/*
。此外,它现在默认会忽略嵌套的node_modules
目录。 - 如果在
overrides[].files
中显式定义了扩展名不为.js
的文件,ESLint 现在会检查这些文件 - 无需使用--ext
标志! - ESLint 现在支持指令注释中的描述,因此诸如禁用注释之类的内容现在可以清楚地记录下来!
- 已向
RuleTester
类添加了其他验证,以改进在插件中测试自定义规则。 - ESLint 现在会相对于入口配置文件解析插件。这意味着位于项目外部的共享配置文件现在可以与它们所需的插件放在一起。
- 从 ESLint v7 开始,分别使用
--config path/to/a-config
和--ignore-path path/to/a-ignore
CLI 标志传递给 ESLint 的配置文件和忽略文件将从当前工作目录解析,而不是从文件位置解析。这允许用户利用共享插件,而无需将其直接安装到他们的项目中。
新的 ESLint
类
CLIEngine
类提供了一个同步 API,它阻塞了诸如并行检查、支持共享配置/解析器/插件/格式化程序中的 ES 模块以及添加可视化显示检查运行进度等功能的实现。新的ESLint
类提供了一个异步 API,ESLint 核心现在将使用它。CLIEngine
在可预见的未来将保留在核心,但可能会在未来的主要版本中删除。
重大更改
4ef6158
Breaking: [email protected] (#13270) (Kai Cataldo)78c8cda
Breaking: RuleTester 改进 (refs eslint/rfcs#25) (#12955) (Milos Djermanovic)185982d
Breaking: 改进插件解析 (refs eslint/rfcs#47) (#12922) (Toru Nagashima)48b122f
Breaking: 使用 --config 更改相对路径 (refs eslint/rfcs#37) (#12887) (Toru Nagashima)4af06fc
Breaking: 使用未知错误属性进行测试应在 RuleTester 中失败 (#12096) (Milos Djermanovic)afa9aac
Breaking: 类默认true
computed-property-spacing (修复 #12812) (#12915) (Milos Djermanovic)7d52151
Breaking: 类在 accessor-pairs 中默认为true
(修复 #12811) (#12919) (Milos Djermanovic)78182e4
Breaking: 向 eslint:recommended 添加新规则 (修复 #12911) (#12920) (Milos Djermanovic)6423e11
Breaking: 在 func-names 中检查未命名的默认导出 (修复 #12194) (#12195) (Chiawen Chen)4293229
Breaking: use-isnan enforceForSwitchCase 默认true
(修复 #12810) (#12913) (Milos Djermanovic)cf38d0d
Breaking: 更改默认忽略模式 (refs eslint/rfcs#51) (#12888) (Toru Nagashima)bfe1dc4
Breaking: no-dupe-class-members 检查一些计算键 (修复 #12808) (#12837) (Milos Djermanovic)c2217c0
Breaking: 使radix
规则更严格 (#12608) (fisker Cheung)1aa021d
Breaking: 检查overrides
文件 (修复 #10828,refs eslint/rfcs#20) (#12677) (Toru Nagashima)b50179d
Breaking: 在 no-extra-parens 中检查赋值目标 (#12490) (Milos Djermanovic)d86a5bb
Breaking: 在 array-callback-return 中检查 flatMap (修复 #12235) (#12765) (Milos Djermanovic)cf46df7
Breaking: 指令注释中的描述 (refs eslint/rfcs#33) (#12699) (Toru Nagashima)7350589
Breaking: 一些规则识别 BigInt 字面量 (修复 #11803) (#12701) (Toru Nagashima)1118fce
Breaking: ‘~/.eslintrc’ 上的运行时弃用 (refs eslint/rfcs#32) (#12678) (Toru Nagashima)2c28fbb
Breaking: 放弃 Node.js 8 支持 (refs eslint/rfcs#44) (#12700) (Toru Nagashima)
功能
f9774ec
新功能:添加 default-case-last 规则 (修复 #12665) (#12668) (Milos Djermanovic)a1d999c
新功能:添加 no-useless-backreference 规则 (修复 #12673) (#12690) (Milos Djermanovic)985dac3
新功能:添加 no-restricted-exports 规则 (修复 #10428) (#12546) (Milos Djermanovic)
增强功能
0b1d65a
更新:改进 array-callback-return 的报告位置 (refs #12334) (#13109) (Milos Djermanovic)d3aac53
更新:在 no-unexpected-multiline 中报告反引号位置 (refs #12334) (#13142) (Milos Djermanovic)bcafd0f
更新:添加 ESLint API (refs eslint/rfcs#40) (#12939) (Kai Cataldo)5c1bdeb
更新:改进 getter-return 的报告位置 (refs #12334) (#13164) (Milos Djermanovic)e7c1d4b
更新:弃用 Node.js 和 CommonJS 规则 (#12898) (Kai Cataldo)af4472f
更新:改进 new-cap 的报告位置 (refs #12334) (#13136) (Milos Djermanovic)a784dac
更新:改进 newline-per-chained-call 的报告位置 (refs #12334) (#13116) (Milos Djermanovic)5e07574
更新:改进 space-before-function-paren 的报告位置 (#13128) (Chiawen Chen)17e2fe4
更新:改进致命修复程序错误的错误消息 (#13120) (Brad Zacher)438dcbb
更新:改进 comma-style 的报告位置 (refs #12334) (#13111) (Chiawen Chen)85b7254
更新:no-inner-declarations 在非块中出现假阴性 (修复 #12222) (#13062) (Anix)6631ef1
更新:改进 no-empty-function 的报告位置 (refs #12334) (#13121) (Milos Djermanovic)e0f1b6c
更新:在 no-magic-numbers 中更严格的数组索引检查 (修复 #12845) (#12851) (Milos Djermanovic)362713c
更新:改进 template-curly-spacing 的报告位置 (#12813) (Milos Djermanovic)105384c
更新:在 operator-linebreak 中报告运算符位置 (refs #12334) (#13102) (Milos Djermanovic)081e240
更新:在 no-implied-eval 中支持 globalThis(修复 #12670)(#13105) (YeonJuan)a1370ab
更新:在 no-obj-calls 中报告构造函数调用(#12909)(Milos Djermanovic)085979f
更新:在 no-implied-eval 中考虑环境(修复 #12733)(#12757) (YeonJuan)e90b29b
更新:允许在 RuleTester 中使用数据测试建议(修复 #12606)(#12635) (Milos Djermanovic)183e300
更新:支持 globalThis(引用 #12670)(#12774) (YeonJuan)1299705
更新:acorn 版本(#13016) (Idan Avrahami)a5b41a7
更新:no-restricted-modules 处理模板字面量(修复 #12926)(#12927) (Michal Piechowiak)051567a
更新:在 id-length 中检查数组模式中的标识符(修复 #12832)(#12839) (YeonJuan)9038a29
更新:func-namesas-needed
与赋值模式出现假阴性(#12932) (Milos Djermanovic)7747177
更新:在 id-blacklist 中报告重命名标识符解构(修复 #12807)(#12923) (YeonJuan)77df505
更新:检查对象解构中重命名的标识符(修复 12827)(#12881) (YeonJuan)41de9df
更新:enforceForLogicalOperands no-extra-boolean-cast(修复 #12137)(#12734) (jmoore914)1ee6b63
更新:在 yoda 中检查模板字面量(修复 #12863)(#12876) (YeonJuan)439c833
更新:array-callback-return 检查 Array.forEach(修复 #12551)(#12646) (Gabriel R Sezefredo)03a69db
更新:在 no-proto、no-iterator 中检查模板字面量(修复 #12801)(#12806) (YeonJuan)562e784
更新:修复 no-magic-numbers 使用 ignoreArrayIndexes 时的假阴性(#12805) (Milos Djermanovic)0460748
更新:在 no-constant-condition 中检查模板字面量(修复 #12815)(#12816) (YeonJuan)e59d775
更新:为 array-element-newline 分离模式/表达式选项(#11796) (jacobparish)f8f115a
更新:在 template-curly-spacing 中处理注释标记(修复 #12744)(#12775) (YeonJuan)9a93d9e
更新:修复 no-restricted-imports export * 时的假阴性(修复 #12737)(#12798) (Milos Djermanovic)68becbd
更新:修复 no-restricted-imports importNames 的报告(修复 #12282)(#12711) (Andrey Alexandrov)ae959b6
更新:在 no-extra-parens 中报告双重多余括号(修复 #12127)(#12697) (YeonJuan)b2c6209
更新:修复 no-extra-parens CallExpression#callee 的假阴性(#12743) (Milos Djermanovic)14b42c3
更新:修复在 max-len 中计算 jsx 注释长度(修复 #12213)(#12661) (YeonJuan)313f70a
更新:将 outerIIFEBody: “off” 添加到 indent 规则(修复 #11377)(#12706) (Kai Cataldo)3fa39a6
更新:处理计算属性键中的本地不支持的正则表达式(#12056) (Milos Djermanovic)8f1020f
更新:no-void 添加一个选项以允许 void 作为语句(#12613) (Brad Zacher)bb6cf50
更新:为 indent 规则添加 offsetTernaryExpressions 选项(#12556) (Adam Stankiewicz)
错误修复
4c0b028
修复:从构建过程中删除 Node.js 和 CommonJS 类别(#13242) (Kai Cataldo)d85e291
修复:yoda exceptRange 的左侧字符串修复(修复 #12883)(#13052) (Anix)8e7a2d9
修复:func-call-spacing “never” 报告错误消息(修复 #13190)(#13193) (Milos Djermanovic)ebc28d7
修复:从 --ext CLI 选项中删除默认的 .js(#13176) (Brandon Mills)c9a5035
修复:newBasePath 应为绝对路径(修复 #12850)(#13078) (Nick Harris)301b450
修复:no-extra-parens export default 序列表达式误报(#13096) (Milos Djermanovic)bfa811c
修复:扩展推荐配置时的初始化错误(修复 #12707)(#12738) (YeonJuan)7551f0c
修复:未检查阴影对象(修复 #12809)(#13115) (Anix)988d842
修复:在 no-useless-concat 中添加结束位置到报告(引用 #12334)(#13110) (Milos Djermanovic)29f32db
修复:更改隐式文件忽略的错误消息逻辑(修复 #12873)(#12878) (Scott Hardin)eb1a43c
修复:require-await 忽略异步生成器(修复 #12459)(#13048) (Anix)920465b
修复:getNameLocationInGlobalDirectiveComment 结束位置(引用 #12334)(#13086) (Milos Djermanovic)ae14a02
修复:在 no-extra-bind 中添加结束位置到报告(引用 #12334)(#13083) (Milos Djermanovic)0c20bc0
修复:在 camelcase 中检查赋值属性目标(修复 #13025)(#13027) (YeonJuan)8d50a7d
修复:在 no-prototype-builtins 中添加结束位置到报告(引用 #12334)(#13087) (Milos Djermanovic)3e4e7f8
修复:no-extra-boolean-cast 修复程序中所需的括号的逻辑错误(#13061) (Milos Djermanovic)aef9488
修复:在 id-blacklist 中允许引用外部全局变量(修复 #12567)(#12987) (Milos Djermanovic)4955c50
修复:移除 prefer-object-spread 中的类型参数(修复 #13058)(#13063) (Milos Djermanovic)dbe357d
修复:检查 prefer-numeric-literals 中的模板字面量(修复 #13045)(#13046) (YeonJuan)2260611
修复:在 no-empty-function 的 allow 方法中添加 async(修复 #12768)(#13036) (Anix)7224eee
修复:no-plusplus 允许在 for 循环后置语句中使用逗号运算符(修复 #13005)(#13024) (Milos Djermanovic)7598cf8
修复:通过 --init 创建配置文件时在文件末尾添加换行符 (#12952) (Andreas Lind)0243549
修复:camelcase 在计算属性中出现误报(修复 #13022)(#13023) (Milos Djermanovic)6cef0d5
修复:在 astUtils.canTokensBeAdjacent 中检查除法运算符 (#12879) (Milos Djermanovic)afde78b
修复:curly 移除 if 和 else 之间必要的括号(修复 #12928)(#12943) (Milos Djermanovic)4797fb2
修复:arrow-body-style 在对象字面量主体中崩溃(修复 #12884)(#12886) (Milos Djermanovic)de14d1c
修复:wrap-iife 自动修复移除强制括号 (#12905) (Milos Djermanovic)5775b06
修复:可选地允许成员名称中使用下划线 (#11972) (Edgardo Avilés)0dfc3ff
修复:在 no-eval 中添加结束位置到报告 (#12960) (Milos Djermanovic)1f1424c
修复:修复 no-extra-parens 中 inconsistently works 选项的工作方式(修复 #12717)(#12843) (YeonJuan)b5adcaa
修复:使 YieldExpression 可抛出(修复 #12880)(#12897) (YeonJuan)95e0586
修复:id-blacklist 在重命名导入时出现误报 (#12831) (Milos Djermanovic)dadc892
修复:operator-assignment 在相邻的除法赋值中崩溃 (#12844) (Milos Djermanovic)a9d92f9
修复:radix 规则在禁用全局变量时崩溃 (#12824) (Milos Djermanovic)533c114
修复:multiline-comment-style 规则在 * 后添加额外的空格(修复 #12785)(#12823) (Karthik Priyadarshan)80309c3
修复:no-constant-condition 不会检查数组(修复 #12225)(#12307) (Sean Gray)de4fa7c
修复:indent 在带标签的模板中错误的缩进(修复 #12122)(#12596) (YeonJuan)16a1c1f
修复:prefer-object-spread 在使用访问器时出现误报(修复 #12086)(#12784) (Milos Djermanovic)0d8c0af
修复:改进 computed-property-spacing 的报告位置 (#12795) (Milos Djermanovic)756b95d
修复:id-blacklist 应该忽略 ObjectPatterns(修复 #12787)(#12792) (JP Ramassini)01ff791
修复:在测试输出中正确显示管道字符 (#12771) (Brad Zacher)00ddfff
修复:JUnit 的 Windows 路径解析(修复 #12507)(#12509) (Michael Wall)1aff21b
修复:no-mixed-spaces-and-tabs 报告多行字符串 (#12566) (Milos Djermanovic)
文档
b5c8d73
文档:更新 7.0.0 迁移指南以保持一致性 (#13267) (Kai Cataldo)356fdb4
文档:添加迁移指南 (#12692) (Toru Nagashima)56d2bee
文档:修复错别字 (#13204) (Nitin Kumar)516f253
文档:为 object-curly-newline 规则添加导入示例 (参考 #12018) (#13177) (Luke Lewis)b398e0b
文档:在 prefer-rest-params 文档中添加规则注释 (#13191) (YeonJuan)c41de38
文档:使用注释修复 curly 多或嵌套示例 (参考 #12972) (#13151) (Milos Djermanovic)57221d5
文档:修复 no-inner-declarations 示例中的 eslint 注释 (#13152) (Milos Djermanovic)5dfd4eb
文档:在 no-return-assign 中添加使用箭头函数的示例(修复 #13135)(#13138) (Anix)adc8fa8
文档:阐明 spaced-comment 中的异常情况(修复 #13032)(#13126) (Anix)b228f95
文档:更新 README 团队和赞助商 (ESLint Jenkins)6c069f9
文档:在示例中的代码块中添加注释 (#13089) (Kibeom Kwon)ee1f053
文档:修复错别字 (#13092) (Max Coplan)76324ac
文档:为规则添加进一步阅读内容 (#13084) (Max Coplan)3f7c9bf
文档:阐明 no-use-before-define 中的 variables 选项(修复 #12986)(#13017) (Anix)9ac5b9e
文档:阐明 node_modules 默认情况下被忽略(修复 #13006)(#13054) (Mika Kuijpers)0de91f3
文档:从错误的示例中删除正确的代码 (#13060) (Anix)af7af9d
文档:更新治理 (#13055) (Nicholas C. Zakas)79ac6cd
文档:为 func-style 添加更易理解的解释(修复 #12900)(#13004) (Anix)b8e20d3
文档:提及 TypeScript 的编译器检查 (#12903) (Benny Neugebauer)e997f32
文档:更新 arrow-parens 以解决轻微的语法问题 (#12962) (Tom)cf14355
文档:修复指向自定义解析器文档的链接 (#12965) (Brandon Mills)f479f6f
文档:引用正确的配置文件名 (#12885) (Patrick Kilgore)8d5c434
文档:修复网站生成时的类别描述(修复 #12894)(#12930) (Kai Cataldo)05380e6
文档:从文档中移除关于分号的声明 (#12944) (Luke Sikina)824d235
文档:将 errorOnUnmatchedPattern 选项添加到 CLIEngine (#12834) (Arthur Denner)33efd71
文档:修复拼写错误 (#12861) (Bryan Mishkin)a5b3c5f
文档:更新 README 团队和赞助商 (ESLint Jenkins)d6c313d
文档:在 prefer-regex-literals 示例中添加缺少的 eslint 注释 (#12858) (Milos Djermanovic)aea1729
文档:修复 Node.js API 目录中的锚点链接 (#12821) (Matija Marohnić)02fcc05
文档:改进 sort-keys (#12791) (Steven Vachon)25eb703
文档:修复 max-lines 规则文档中的失效链接 (#12766) (Christian Bundy)098b67d
文档:修复 brace-style.md 中的轻微错别字 (#12749) (Marko Kaznovac)b23ad0d
文档:更改 working-with-rules.md 中的失效链接 (#12732) (Damien Cassou)
依赖项升级
b98d8bd
升级:[email protected] (#13271) (Kai Cataldo)3eeae56
升级:一些(开发)依赖项 (#13155) (薛定谔的猫)95e1c70
升级:[email protected](修复 #9366) (#13140) (Kai Cataldo)2111c52
升级:[email protected] (#13076) (Milos Djermanovic)95613d4
升级:[email protected] (#13026) (Kai Cataldo)e632c31
升级:多个依赖项 (#12753) (Toru Nagashima)
构建相关
8d1b4db
构建:7.0.0-rc.0 的更新日志 (ESLint Jenkins)2531b80
构建:7.0.0-alpha.3 的更新日志 (ESLint Jenkins)2e8f193
构建:7.0.0-alpha.2 的更新日志 (ESLint Jenkins)e9f1073
构建:7.0.0-alpha.1 的更新日志 (ESLint Jenkins)c8c1b2b
构建:7.0.0-alpha.0 的更新日志 (ESLint Jenkins)4e16957
构建:更新浏览器构建 (#12693) (Toru Nagashima)827259e
构建:eslint-config-eslint 发布的 package.json 更新 (ESLint Jenkins)
杂项
401a687
杂项:修复预发布版本的规则列表 (#13230) (Kai Cataldo)2ce6bed
杂项:为嵌套数组添加测试 (#13145) (Anix)6b7030b
杂项:在 Node.js v14 上运行测试 (#13210) (fisker Cheung)e13256e
杂项:在 config-initializer 中使用 espree.latestEcmaVersion (#13157) (Kai Cataldo)e4f57b7
杂项:为 array-element-newline 添加嵌套数组测试 (#13161) (Anix)bc0c02c
杂项:将锁文件添加到 gitignore (#13015) (Anix)26267ed
杂项:更新 GitHub Actions (#12984) (Pig Fang)472025f
杂项:更新 eslint-config-eslint 中的 space-before-function-paren (#12966) (Kai Cataldo)1907e57
杂项:添加 Twitter 和 Open Collective 徽章 (#12877) (Kai Cataldo)b7f0d20
杂项:使用一致的徽章样式 (#12825) (fisker Cheung)3734a66
杂项:为消息使用 ID (#12859) (Gareth Jones)0cae920
杂项:重命名阴影全局变量 (#12862) (Tony Brix)055b80d
杂项:修复 complexity.js 中的错别字 (#12864) (Kyle Shevlin)9f39ef0
杂项:PULL_REQUEST_TEMPLATE.md 中的错别字 (#12848) (Balázs Orbán)a60d5cd
杂项:no-irregular-whitespace.js 中的错别字 (#12847) (Balázs Orbán)691d19a
杂项:添加缺少的ecmaVersion
2020/11 类型值 (#12833) (Piotr Błażejewicz (Peter Blazejewicz))f5b9656
杂项:为 no-constant-condition 添加测试 (#12836) (Milos Djermanovic)10a79a6
杂项:在内部采用eslint-plugin/require-meta-docs-description
(#12762) (Bryan Mishkin)561b6d4
杂项:在 PR 模板中添加先决条件清单 (#12790) (Kai Cataldo)9dfc850
杂项:重构以在多个规则中使用 messageId (#12715) (Brad Zacher)b77b858
杂项:修复 one-var 规则的 separateRequires 测试 (#12709) (Milos Djermanovic)e4df7df
杂项:为 RuleTester 测试用例添加 JSDoc 类型 (#12325) (Chiawen Chen)4744397
杂项:移除 max-lines-per-function 中未使用的代码 (#12659) (YeonJuan)39f5a45
杂项:为 for-direction 添加测试用例 (#12698) (YeonJuan)b340304
杂项:添加额外的测试,改进文档 (#12492) (Kevin Partington)