
亮点
🌐 Highlights
7.0.0 中有若干重大更改。我们创建了一个 迁移指南 来解释这些重大更改并说明如何升级。
🌐 There are several breaking changes in 7.0.0. We’ve created a migration guide to explain the breaking changes and describe how to upgrade.
停止支持 Node.js v8
🌐 Dropping support for Node.js v8
Node.js 8 在 2019 年 12 月达到生命周期终止(EOL),我们在此版本中正式停止对其支持。
🌐 Node.js 8 reached EOL in December 2019, and we are officially dropping support for it in this release.
核心规则变更
🌐 Core rule changes
- 核心中的十条 Node.js/CommonJS 规则已被弃用,并已移至 eslint-plugin-node 插件。
- 已经更新了若干规则,以识别 bigint 字面量并默认在更多情况下发出警告。
eslint:recommended已经更新了一些新规则:no-dupe-else-if、no-import-assign和no-setter-return。
改进的开发者体验
🌐 Improved developer experience
- 默认的忽略模式已更新。ESLint 默认将不再忽略
.eslintrc.js和bower_components/*。此外,它现在默认将忽略嵌套的node_modules目录。 - 如果在
overrides[].files中明确定义,ESLint 现在将会检查除.js之外扩展名的文件 —— 无需使用--ext标志! - ESLint 现在支持在指令注释中添加描述,因此像禁用注释这样的内容现在可以清楚地记录!
RuleTester类已添加了额外的验证,以改进插件中自定义规则的测试。- ESLint 现在将相对于入口配置文件解析插件。这意味着位于项目外部的共享配置文件现在可以与它们所需的插件放在一起。
- 从 ESLint v7 开始,通过 --config path/to/a-config 和 --ignore-path path/to/a-ignore CLI 标志传递给 ESLint 的配置文件和忽略文件,将从当前工作目录解析,而不是文件所在位置。这允许用户使用共享插件,而无需直接在其项目中安装它们。
新的 ESLint 类
🌐 New ESLint class
CLIEngine类提供了一个同步 API,这种 API 会阻塞实现某些功能,例如并行 lint、在可共享的配置/解析器/插件/格式化器中支持 ES 模块,以及添加在 lint 运行过程中可视化显示进度的能力。新的ESLint类提供了一个异步 API,ESLint 核心将从现在起使用它。CLIEngine在可预见的未来仍将保留在核心中,但可能在未来的主要版本中被移除。
重大更改
🌐 Breaking Changes
4ef6158最新消息: espree@7.0.0 (#13270) (Kai Cataldo)78c8cda最新消息:RuleTester 改进 (参考 eslint/rfcs#25) (#12955) (Milos Djermanovic)185982d最新消息:改进插件解析(参考 eslint/rfcs#47)(#12922)(Toru Nagashima)48b122f重大更新:使用 --config 更改相对路径(参考 eslint/rfcs#37)(#12887)(Toru Nagashima)4af06fc爆料:在 RuleTester 中带有未知错误属性的测试应失败 (#12096) (Milos Djermanovic)afa9aac最新消息:类默认truecomputed-property-spacing(修复 #12812)(#12915)(Milos Djermanovic)7d52151最新消息:类在 accessor-pairs 中的默认true(修复 #12811)(#12919)(Milos Djermanovic)78182e4重大新闻:为 eslint:recommended 添加新规则(修复 #12911)(#12920)(Milos Djermanovic)6423e11重大更新:在 func-names 中检查未命名的默认导出(修复 #12194)(#12195)(陈嘉文)4293229最新消息: use-isnan 在 switch case 中强制默认true(修复 #12810) (#12913) (Milos Djermanovic)cf38d0d最新消息:更改默认忽略模式(参考 eslint/rfcs#51) (#12888)(Toru Nagashima)bfe1dc4最新消息: no-dupe-class-members 检查一些计算键(修复 #12808) (#12837) (Milos Djermanovic)c2217c0爆料:使radix规则更严格 (#12608)(fisker Cheung)1aa021d最新消息:lintoverrides文件(修复 #10828,参考 eslint/rfcs#20)(#12677) (Toru Nagashima)b50179d最新消息:检查 no-extra-parens 中的赋值目标 (#12490) (Milos Djermanovic)d86a5bb突发新闻:在 array-callback-return 中检查 flatMap(修复 #12235)(#12765)(Milos Djermanovic)[cf46df7](https://github.com/eslint/eslint/commit/cf46df70158a4ed4c09d5c9d655c07dc6df3ff5e)爆料:指令注释中的描述 (参考 eslint/rfcs#33) (#12699) (Toru Nagashima)7350589最新消息:一些规则支持 bigint 字面量(修复了 #11803)(#12701) (Toru Nagashima)1118fce最新消息:在 ‘~/.eslintrc’ 上的运行时弃用(参考 eslint/rfcs#32)(#12678) (Toru Nagashima)2c28fbb重大更新:停止支持 Node.js 8(参考 eslint/rfcs#44) (#12700) (Toru Nagashima)
特性
🌐 Features
f9774ec新增:添加 default-case-last 规则(修复 #12665)(#12668) (Milos Djermanovic)a1d999c新增:添加 no-useless-backreference 规则(修复 #12673)(#12690) (Milos Djermanovic)985dac3新增:添加 no-restricted-exports 规则(修复 #10428)(#12546)(Milos Djermanovic)
增强功能
🌐 Enhancements
0b1d65a更新:改进 array-callback-return 的报告位置(参考 #12334)(#13109)(Milos Djermanovic)d3aac53更新:在 no-unexpected-multiline 中报告反引号位置(参考 #12334)(#13142)(Milos Djermanovic)bcafd0f更新:添加 ESLint API(参考 eslint/rfcs#40)(#12939)(Kai Cataldo)5c1bdeb更新:改进 getter-return 的报告位置(参考 #12334)(#13164)(Milos Djermanovic)e7c1d4b更新:弃用 Node.js 和 CommonJS 规则 (#12898) (Kai Cataldo)af4472f更新:改进 new-cap 的报告位置(参考 #12334)(#13136)(Milos Djermanovic)a784dac更新:改进报告位置 newline-per-chained-call (参考 #12334) (#13116) (Milos Djermanovic)5e07574更新:改进 space-before-function-paren 的报告位置 (#13128) (Chiawen Chen)17e2fe4更新:改进致命修复器错误的错误消息 (#13120) (Brad Zacher)438dcbb更新:改进 comma-style 的报告位置(参考 #12334)(#13111)(Chiawen Chen)85b7254更新:no-inner-declarations 在非块中误报为假阴性(修复 #12222)(#13062) (Anix)6631ef1更新:改进 no-empty-function 的报告位置(参考 #12334) (#13121)(Milos Djermanovic)e0f1b6c更新:在 no-magic-numbers 中对数组索引进行了更严格的检查(修复 #12845) (#12851) (Milos Djermanovic)362713c更新:改进 template-curly-spacing 的报告位置 (#12813) (Milos Djermanovic)105384c更新:在 operator-linebreak 中报告操作符位置(参考 #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 中使用数据测试 Suggestions(修复 #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](https://github.com/eslint/eslint/commit/9038a29569548c0563c29dbe9f7dae280ff3addd)更新:func-namesas-needed在 AssignmentPattern 上的假阴性 (#12932) (Milos Djermanovic)7747177更新:在 id-blacklist 中报告重命名 id 解构(修复 #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](https://github.com/eslint/eslint/commit/562e7845946a490f2e173a0bcd1af631070a4eef)更新:修复 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更新:在 indent 规则中添加 outerIIFEBody: “off”(修复 #11377)(#12706)(Kai Cataldo)3fa39a6更新:处理计算属性键中本地不支持的正则表达式 (#12056) (Milos Djermanovic)8f1020f更新: no-void 添加一个选项以允许将 void 作为语句 (#12613) (Brad Zacher)bb6cf50更新:为 indent 规则添加 offsetTernaryExpressions 选项 (#12556) (Adam Stankiewicz)
错误修复
🌐 Bug Fixes
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 导出默认序列表达式误报 (#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](/docs/rules/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 中不一致工作的选项 (修复 #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 中标记模板的 indent 错误(修复 #12122) (#12596) (YeonJuan)16a1c1f修复: prefer-object-spread 在访问器中的误报 (修复 #12086) (#12784) (Milos Djermanovic)0d8c0af修复:改进 computed-property-spacing 的报告位置 (#12795) (Milos Djermanovic)756b95d修复: id-blacklist 应忽略对象模式 (修复 #12787) (#12792) (JP Ramassini)01ff791修复:在测试输出中正确显示管道字符 (#12771) (Brad Zacher)00ddfff修复:Windows 路径解析用于 JUnit(修复 #12507)(#12509) (Michael Wall)1aff21b修复: no-mixed-spaces-and-tabs 报告多行字符串 (#12566) (Milos Djermanovic)
文档
🌐 Documentation
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文档:向 CLIEngine 添加 errorOnUnmatchedPattern 选项 (#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)
依赖升级
🌐 Dependency Upgrades
b98d8bd升级: eslint-release@2.0.0 (#13271) (Kai Cataldo)3eeae56升级:一些(开发)依赖 (#13155) (薛定谔的猫)[95e1c70](https://github.com/eslint/eslint/commit/95e1c70cebde210a990ee786ec7ab1c8e522edb8)升级:levn@0.4.1(修复#9366)(#13140)(Kai Cataldo)2111c52升级:esquery@1.2.0 (#13076) (Milos Djermanovic)95613d4升级:espree@6.2.1 (#13026) (Kai Cataldo)e632c31升级:多个依赖 (#12753) (Toru Nagashima)
构建相关
🌐 Build Related
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)
杂项
🌐 Chores
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事务:添加缺失的ecmaVersion2020/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)
