
发布于: 公告 5 分钟阅读
我们刚刚发布了 ESLint v7.0.0,这是一个 ESLint 的主要版本升级。此版本添加了一些新功能,并修复了之前版本中发现的几个错误。此版本也有一些破坏性更改,因此请仔细阅读以下内容。
7.0.0 版本中有几处破坏性更改。我们创建了一个 迁移指南,以解释这些破坏性更改,并描述如何升级。
Node.js 8 于 2019 年 12 月达到 EOL(生命周期结束),我们在本版本中正式放弃对其支持。
eslint:recommended
已更新,添加了一些新规则:no-dupe-else-if
、no-import-assign
和 no-setter-return
。.eslintrc.js
和 bower_components/*
。此外,现在默认会忽略嵌套的 node_modules
目录。overrides[].files
中显式定义,ESLint 现在将对扩展名不是 .js
的文件进行 lint 检查 - 无需使用 --ext
标志!RuleTester
类添加了额外的验证,以改进插件中自定义规则的测试。ESLint
类CLIEngine
类提供了一个同步 API,它阻碍了诸如并行 linting、在共享配置/解析器/插件/格式化程序中支持 ES 模块以及添加可视化显示 linting 运行进度的功能的实现。新的 ESLint
类提供了一个异步 API,ESLint 核心在未来将使用它。CLIEngine
在可预见的未来将保留在核心中,但在未来的主要版本中可能会被删除。4ef6158
破坏性更改:espree@7.0.0 (#13270) (Kai Cataldo)78c8cda
破坏性更改:RuleTester 改进 (refs eslint/rfcs#25) (#12955) (Milos Djermanovic)185982d
破坏性更改:改进插件解析 (refs eslint/rfcs#47) (#12922) (Toru Nagashima)48b122f
破坏性更改:更改 --config 的相对路径 (refs eslint/rfcs#37) (#12887) (Toru Nagashima)4af06fc
破坏性更改:RuleTester 中使用未知错误属性的测试应该失败 (#12096) (Milos Djermanovic)afa9aac
破坏性更改:class default true
computed-property-spacing (fixes #12812) (#12915) (Milos Djermanovic)7d52151
破坏性更改:classes default true
in accessor-pairs (fixes #12811) (#12919) (Milos Djermanovic)78182e4
破坏性更改:向 eslint:recommended 添加新规则 (fixes #12911) (#12920) (Milos Djermanovic)6423e11
破坏性更改:check unnamed default export in func-names (fixes #12194) (#12195) (Chiawen Chen)4293229
破坏性更改:use-isnan enforceForSwitchCase default true
(fixes #12810) (#12913) (Milos Djermanovic)cf38d0d
破坏性更改:更改默认忽略模式 (refs eslint/rfcs#51) (#12888) (Toru Nagashima)bfe1dc4
破坏性更改:no-dupe-class-members checks some computed keys (fixes #12808) (#12837) (Milos Djermanovic)c2217c0
破坏性更改:使 radix
规则更严格 (#12608) (fisker Cheung)1aa021d
破坏性更改:lint overrides
文件 (fixes #10828, refs eslint/rfcs#20) (#12677) (Toru Nagashima)b50179d
破坏性更改:检查 no-extra-parens 中的赋值目标 (#12490) (Milos Djermanovic)d86a5bb
破坏性更改:检查 array-callback-return 中的 flatMap (fixes #12235) (#12765) (Milos Djermanovic)cf46df7
破坏性更改:指令注释中的描述 (refs eslint/rfcs#33) (#12699) (Toru Nagashima)7350589
破坏性更改:一些规则识别 bigint 字面量 (fixes #11803) (#12701) (Toru Nagashima)1118fce
破坏性更改:runtime-deprecation on ‘~/.eslintrc’ (refs eslint/rfcs#32) (#12678) (Toru Nagashima)2c28fbb
破坏性更改:放弃 Node.js 8 支持 (refs eslint/rfcs#44) (#12700) (Toru Nagashima)f9774ec
新增:添加 default-case-last 规则 (fixes #12665) (#12668) (Milos Djermanovic)a1d999c
新增:添加 no-useless-backreference 规则 (fixes #12673) (#12690) (Milos Djermanovic)985dac3
新增:添加 no-restricted-exports 规则 (fixes #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
更新:改进致命 fixer 错误的错误消息 (#13120) (Brad Zacher)438dcbb
更新:改进 comma-style 的报告位置 (refs #12334) (#13111) (Chiawen Chen)85b7254
更新:no-inner-declarations 在非块级作用域中出现假阴性 (fixes #12222) (#13062) (Anix)6631ef1
更新:改进 no-empty-function 的报告位置 (refs #12334) (#13121) (Milos Djermanovic)e0f1b6c
更新:no-magic-numbers 中更严格的数组索引检查 (fixes #12845) (#12851) (Milos Djermanovic)362713c
更新:改进 template-curly-spacing 的报告位置 (#12813) (Milos Djermanovic)105384c
更新:报告 operator-linebreak 中的运算符位置 (refs #12334) (#13102) (Milos Djermanovic)081e240
更新:在 no-implied-eval 中支持 globalThis (fixes #12670) (#13105) (YeonJuan)a1370ab
更新:报告 no-obj-calls 中的构造函数调用 (#12909) (Milos Djermanovic)085979f
更新:考虑 no-implied-eval 中的 env (fixes #12733) (#12757) (YeonJuan)e90b29b
更新:允许在 RuleTester 中使用数据测试 Suggestions (fixes #12606) (#12635) (Milos Djermanovic)183e300
更新:支持 globalThis (refs #12670) (#12774) (YeonJuan)1299705
更新:acorn 版本 (#13016) (Idan Avrahami)a5b41a7
更新:no-restricted-modules 处理模板字面量 (TemplateLiteral) (fixes #12926) (#12927) (Michal Piechowiak)051567a
更新:检查 id-length 中数组模式中的标识符 (fixes #12832) (#12839) (YeonJuan)9038a29
更新:func-names as-needed
在 AssignmentPattern 中出现假阴性 (#12932) (Milos Djermanovic)7747177
更新:报告 id-blacklist 中重命名的 id 解构 (fixes #12807) (#12923) (YeonJuan)77df505
更新:检查对象解构中重命名的标识符 (fixes 12827) (#12881) (YeonJuan)41de9df
更新:enforceForLogicalOperands no-extra-boolean-cast (fixes #12137) (#12734) (jmoore914)1ee6b63
更新:检查 yoda 中的模板字面量 (fixes #12863) (#12876) (YeonJuan)439c833
更新:array-callback-return 检查 Array.forEach (fixes #12551) (#12646) (Gabriel R Sezefredo)03a69db
更新:检查 no-proto, no-iterator 中的模板字面量 (fixes #12801) (#12806) (YeonJuan)562e784
更新:修复 no-magic-numbers 在 ignoreArrayIndexes 中的假阴性 (#12805) (Milos Djermanovic)0460748
更新:检查 no-constant-condition 中的模板字面量 (fixes #12815) (#12816) (YeonJuan)e59d775
更新:为 array-element-newline 分离 pattern/expression 选项 (#11796) (jacobparish)f8f115a
更新:在 template-curly-spacing 中处理注释标记 (fixes #12744) (#12775) (YeonJuan)9a93d9e
更新:修复 no-restricted-imports export * 假阴性 (fixes #12737) (#12798) (Milos Djermanovic)68becbd
更新:修复 no-restricted-imports importNames 报告 (fixes #12282) (#12711) (Andrey Alexandrov)ae959b6
更新:报告 no-extra-parens 中的双重多余括号 (fixes #12127) (#12697) (YeonJuan)b2c6209
更新:修复 no-extra-parens CallExpression#callee 假阴性 (#12743) (Milos Djermanovic)14b42c3
更新:修复 max-len 中 jsx 注释长度的计算 (fixes #12213) (#12661) (YeonJuan)313f70a
更新:向 indent 规则添加 outerIIFEBody: “off” (fixes #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 (fixes #12883) (#13052) (Anix)8e7a2d9
修复:func-call-spacing “never” 报告错误消息 (fixes #13190) (#13193) (Milos Djermanovic)ebc28d7
修复:从 --ext CLI 选项中删除默认的 .js (#13176) (Brandon Mills)c9a5035
修复:newBasePath 应该是绝对路径 (fixes #12850) (#13078) (Nick Harris)301b450
修复:no-extra-parens export default 序列表达式误报 (#13096) (Milos Djermanovic)bfa811c
修复:扩展 recommended 配置时出现初始化错误 (fixes #12707) (#12738) (YeonJuan)7551f0c
修复:未检查被遮蔽的 Object (fixes #12809) (#13115) (Anix)988d842
修复:在 no-useless-concat 的报告中添加结束位置 (refs #12334) (#13110) (Milos Djermanovic)29f32db
修复:更改隐式文件忽略的错误消息逻辑 (fixes #12873) (#12878) (Scott Hardin)eb1a43c
修复:require-await 忽略异步生成器 (fixes #12459) (#13048) (Anix)920465b
修复:getNameLocationInGlobalDirectiveComment 结束位置 (refs #12334) (#13086) (Milos Djermanovic)ae14a02
修复:在 no-extra-bind 的报告中添加结束位置 (refs #12334) (#13083) (Milos Djermanovic)0c20bc0
修复:检查 camelcase 中的赋值属性目标 (fixes #13025) (#13027) (YeonJuan)8d50a7d
修复:在 no-prototype-builtins 的报告中添加结束位置 (refs #12334) (#13087) (Milos Djermanovic)3e4e7f8
修复:no-extra-boolean-cast fixer 中所需括号的逻辑不正确 (#13061) (Milos Djermanovic)aef9488
修复:允许在 id-blacklist 中引用外部全局变量 (fixes #12567) (#12987) (Milos Djermanovic)4955c50
修复:移除 prefer-object-spread 中的类型参数 (fixes #13058) (#13063) (Milos Djermanovic)dbe357d
修复:检查 prefer-numeric-literals 中的模板字面量 (fixes #13045) (#13046) (YeonJuan)2260611
修复:在 no-empty-function 的 allow 方法中添加 async (fixes #12768) (#13036) (Anix)7224eee
修复:no-plusplus 允许在 for 的 afterthought 中使用逗号操作数 (fixes #13005) (#13024) (Milos Djermanovic)7598cf8
修复:通过 --init 创建配置时,在 eof 之前换行 (#12952) (Andreas Lind)0243549
修复:camelcase 计算属性误报 (fixes #13022) (#13023) (Milos Djermanovic)6cef0d5
修复:检查 astUtils.canTokensBeAdjacent 中的除法运算符 (#12879) (Milos Djermanovic)afde78b
修复:curly 移除 if 和 else 之间必要的花括号 (fixes #12928) (#12943) (Milos Djermanovic)4797fb2
修复:arrow-body-style 在对象字面量 body 中崩溃 (fixes #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 选项 (fixes #12717) (#12843) (YeonJuan)b5adcaa
修复:使 YieldExpression 可抛出 (fixes #12880) (#12897) (YeonJuan)95e0586
修复:id-blacklist 在重命名的导入中出现误报 (#12831) (Milos Djermanovic)dadc892
修复:operator-assignment 在相邻的除法赋值中崩溃 (#12844) (Milos Djermanovic)a9d92f9
修复:radix 规则在禁用的全局变量中崩溃 (#12824) (Milos Djermanovic)533c114
修复:multiline-comment-style 规则在 * 后添加额外的空格 (fixes #12785) (#12823) (Karthik Priyadarshan)80309c3
修复:no-constant-condition 不会内省数组 (fixes #12225) (#12307) (Sean Gray)de4fa7c
修复:indent 在标记模板处的 indent 错误 (fixes #12122) (#12596) (YeonJuan)16a1c1f
修复:prefer-object-spread 在访问器中出现误报 (fixes #12086) (#12784) (Milos Djermanovic)0d8c0af
修复:改进 computed-property-spacing 的报告位置 (#12795) (Milos Djermanovic)756b95d
修复:id-blacklist 应该忽略 ObjectPatterns (fixes #12787) (#12792) (JP Ramassini)01ff791
修复:在测试输出中正确显示管道字符 (#12771) (Brad Zacher)00ddfff
修复:JUnit 的 Windows 路径解析 (fixes #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 规则添加导入示例 (refs #12018) (#13177) (Luke Lewis)b398e0b
文档:在 prefer-rest-params 文档中添加规则注释 (#13191) (YeonJuan)c41de38
文档:修复 curly multi-or-nest 示例中的注释 (refs #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 TOC 中的锚链接 (#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
升级:eslint-release@2.0.0 (#13271) (Kai Cataldo)3eeae56
升级:一些 (dev) 依赖 (#13155) (薛定谔的猫)95e1c70
升级: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)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)最新的 ESLint 新闻、案例研究、教程和资源。