Friday, 8 May, 2020 UTC


Summary

ESLint v7.0.0 released
We just pushed ESLint v7.0.0, which is a major release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. This release also has some breaking changes, so please read the following closely.
Highlights
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.

Dropping support for Node.js v8

Node.js 8 reached EOL in December 2019, and we are officially dropping support for it in this release.

Core rule changes

  • The ten Node.js/CommonJS rules in core have been deprecated and moved to the eslint-plugin-node plugin.
  • Several rules have been updated to recognize bigint literals and warn on more cases by default.
  • eslint:recommended has been updated with a few new rules: no-dupe-else-if, no-import-assign, and no-setter-return.

Improved developer experience

  • The default ignore patterns have been updated. ESLint will no longer ignore .eslintrc.js and bower_components/* by default. Additionally, it will now ignore nested node_modules directories by default.
  • ESLint will now lint files with extensions other than .js if they are explicitly defined in overrides[].files - no need to use the --ext flag!
  • ESLint now supports descriptions in directive comments, so things like disable comments can now be clearly documented!
  • Additional validation has been added to the RuleTester class to improve testing custom rules in plugins.
  • ESLint will now resolve plugins relative to the entry configuration file. This means that shared configuration files that are located outside the project can now be colocated with the plugins they require.
  • Starting in ESLint v7, configuration files and ignore files passed to ESLint using the --config path/to/a-config and --ignore-path path/to/a-ignore CLI flags, respectively, will resolve from the current working directory rather than the file location. This allows for users to utilize shared plugins without having to install them directly in their project.

New ESLint class

  • The CLIEngine class provides a synchronous API that is blocking the implementation of features such as parallel linting, supporting ES modules in shareable configs/parsers/plugins/formatters, and adding the ability to visually display the progress of linting runs. The new ESLint class provides an asynchronous API that ESLint core will now using going forward. CLIEngine will remain in core for the foreseeable future but may be removed in a future major version.
Breaking Changes
  • 4ef6158 Breaking: [email protected] (#13270) (Kai Cataldo)
  • 78c8cda Breaking: RuleTester Improvements (refs eslint/rfcs#25) (#12955) (Milos Djermanovic)
  • 185982d Breaking: improve plugin resolving (refs eslint/rfcs#47) (#12922) (Toru Nagashima)
  • 48b122f Breaking: change relative paths with --config (refs eslint/rfcs#37) (#12887) (Toru Nagashima)
  • 4af06fc Breaking: Test with an unknown error property should fail in RuleTester (#12096) (Milos Djermanovic)
  • afa9aac Breaking: class default true computed-property-spacing (fixes #12812) (#12915) (Milos Djermanovic)
  • 7d52151 Breaking: classes default true in accessor-pairs (fixes #12811) (#12919) (Milos Djermanovic)
  • 78182e4 Breaking: Add new rules to eslint:recommended (fixes #12911) (#12920) (Milos Djermanovic)
  • 6423e11 Breaking: check unnamed default export in func-names (fixes #12194) (#12195) (Chiawen Chen)
  • 4293229 Breaking: use-isnan enforceForSwitchCase default true (fixes #12810) (#12913) (Milos Djermanovic)
  • cf38d0d Breaking: change default ignore pattern (refs eslint/rfcs#51) (#12888) (Toru Nagashima)
  • bfe1dc4 Breaking: no-dupe-class-members checks some computed keys (fixes #12808) (#12837) (Milos Djermanovic)
  • c2217c0 Breaking: make radix rule stricter (#12608) (fisker Cheung)
  • 1aa021d Breaking: lint overrides files (fixes #10828, refs eslint/rfcs#20) (#12677) (Toru Nagashima)
  • b50179d Breaking: Check assignment targets in no-extra-parens (#12490) (Milos Djermanovic)
  • d86a5bb Breaking: Check flatMap in array-callback-return (fixes #12235) (#12765) (Milos Djermanovic)
  • cf46df7 Breaking: description in directive comments (refs eslint/rfcs#33) (#12699) (Toru Nagashima)
  • 7350589 Breaking: some rules recognize bigint literals (fixes #11803) (#12701) (Toru Nagashima)
  • 1118fce Breaking: runtime-deprecation on '~/.eslintrc' (refs eslint/rfcs#32) (#12678) (Toru Nagashima)
  • 2c28fbb Breaking: drop Node.js 8 support (refs eslint/rfcs#44) (#12700) (Toru Nagashima)
Features
  • f9774ec New: Add default-case-last rule (fixes #12665) (#12668) (Milos Djermanovic)
  • a1d999c New: Add no-useless-backreference rule (fixes #12673) (#12690) (Milos Djermanovic)
  • 985dac3 New: Add no-restricted-exports rule (fixes #10428) (#12546) (Milos Djermanovic)
Enhancements
  • 0b1d65a Update: Improve report location for array-callback-return (refs #12334) (#13109) (Milos Djermanovic)
  • d3aac53 Update: report backtick loc in no-unexpected-multiline (refs #12334) (#13142) (Milos Djermanovic)
  • bcafd0f Update: Add ESLint API (refs eslint/rfcs#40) (#12939) (Kai Cataldo)
  • 5c1bdeb Update: Improve report location for getter-return (refs #12334) (#13164) (Milos Djermanovic)
  • e7c1d4b Update: deprecate Node.js & CommonJS rules (#12898) (Kai Cataldo)
  • af4472f Update: Improve report location for new-cap (refs #12334) (#13136) (Milos Djermanovic)
  • a784dac Update: Improve report location newline-per-chained-call (refs #12334) (#13116) (Milos Djermanovic)
  • 5e07574 Update: Improve report location for space-before-function-paren (#13128) (Chiawen Chen)
  • 17e2fe4 Update: Improve error message for fatal fixer errors (#13120) (Brad Zacher)
  • 438dcbb Update: Improve report location for comma-style (refs #12334) (#13111) (Chiawen Chen)
  • 85b7254 Update: no-inner-declarations false negative in non-block (fixes #12222) (#13062) (Anix)
  • 6631ef1 Update: Improve report location for no-empty-function (refs #12334) (#13121) (Milos Djermanovic)
  • e0f1b6c Update: stricter array index check in no-magic-numbers (fixes #12845) (#12851) (Milos Djermanovic)
  • 362713c Update: Improve report location for template-curly-spacing (#12813) (Milos Djermanovic)
  • 105384c Update: report operator location in operator-linebreak (refs #12334) (#13102) (Milos Djermanovic)
  • 081e240 Update: support globalThis in no-implied-eval (fixes #12670) (#13105) (YeonJuan)
  • a1370ab Update: Report constructor calls in no-obj-calls (#12909) (Milos Djermanovic)
  • 085979f Update: consider env in no-implied-eval (fixes #12733) (#12757) (YeonJuan)
  • e90b29b Update: Allow testing Suggestions with data in RuleTester (fixes #12606) (#12635) (Milos Djermanovic)
  • 183e300 Update: support globalThis (refs #12670) (#12774) (YeonJuan)
  • 1299705 Update: acorn version (#13016) (Idan Avrahami)
  • a5b41a7 Update: no-restricted-modules handle TemplateLiteral (fixes #12926) (#12927) (Michal Piechowiak)
  • 051567a Update: check identifier in array pattern in id-length (fixes #12832) (#12839) (YeonJuan)
  • 9038a29 Update: func-names as-needed false negative with AssignmentPattern (#12932) (Milos Djermanovic)
  • 7747177 Update: report rename id destructuring in id-blacklist (fixes #12807) (#12923) (YeonJuan)
  • 77df505 Update: check renaming identifier in object destructuring (fixes 12827) (#12881) (YeonJuan)
  • 41de9df Update: enforceForLogicalOperands no-extra-boolean-cast (fixes #12137) (#12734) (jmoore914)
  • 1ee6b63 Update: check template literal in yoda (fixes #12863) (#12876) (YeonJuan)
  • 439c833 Update: array-callback-return checks Array.forEach (fixes #12551) (#12646) (Gabriel R Sezefredo)
  • 03a69db Update: check template literal in no-proto, no-iterator (fixes #12801) (#12806) (YeonJuan)
  • 562e784 Update: fix no-magic-numbers false negative with ignoreArrayIndexes (#12805) (Milos Djermanovic)
  • 0460748 Update: check template literal in no-constant-condition (fixes #12815) (#12816) (YeonJuan)
  • e59d775 Update: Separate pattern/expression options for array-element-newline (#11796) (jacobparish)
  • f8f115a Update: treat comment tokens in template-curly-spacing (fixes #12744) (#12775) (YeonJuan)
  • 9a93d9e Update: fix no-restricted-imports export * false negative (fixes #12737) (#12798) (Milos Djermanovic)
  • 68becbd Update: fix no-restricted-imports importNames reporting (fixes #12282) (#12711) (Andrey Alexandrov)
  • ae959b6 Update: report double extra parens in no-extra-parens (fixes #12127) (#12697) (YeonJuan)
  • b2c6209 Update: fix no-extra-parens CallExpression#callee false negatives (#12743) (Milos Djermanovic)
  • 14b42c3 Update: fix counting jsx comment len in max-len (fixes #12213) (#12661) (YeonJuan)
  • 313f70a Update: add outerIIFEBody: "off" to indent rule (fixes #11377) (#12706) (Kai Cataldo)
  • 3fa39a6 Update: Handle locally unsupported regex in computed property keys (#12056) (Milos Djermanovic)
  • 8f1020f Update: no-void add an option to allow void as a statement (#12613) (Brad Zacher)
  • bb6cf50 Update: Add offsetTernaryExpressions option for indent rule (#12556) (Adam Stankiewicz)
Bug Fixes
  • 4c0b028 Fix: remove Node.js and CommonJS category from build process (#13242) (Kai Cataldo)
  • d85e291 Fix: yoda left string fix for exceptRange (fixes #12883) (#13052) (Anix)
  • 8e7a2d9 Fix: func-call-spacing "never" reports wrong message (fixes #13190) (#13193) (Milos Djermanovic)
  • ebc28d7 Fix: Remove default .js from --ext CLI option (#13176) (Brandon Mills)
  • c9a5035 Fix: newBasePath should be an absolute path (fixes #12850) (#13078) (Nick Harris)
  • 301b450 Fix: no-extra-parens export default sequence expression false positive (#13096) (Milos Djermanovic)
  • bfa811c Fix: init error in extending recommended config (fixes #12707) (#12738) (YeonJuan)
  • 7551f0c Fix: no check for shadowed Object (fixes #12809) (#13115) (Anix)
  • 988d842 Fix: add end location to report in no-useless-concat (refs #12334) (#13110) (Milos Djermanovic)
  • 29f32db Fix: Change error message logic for implicit file ignore (fixes #12873) (#12878) (Scott Hardin)
  • eb1a43c Fix: require-await ignore async generators (fixes #12459) (#13048) (Anix)
  • 920465b Fix: getNameLocationInGlobalDirectiveComment end location (refs #12334) (#13086) (Milos Djermanovic)
  • ae14a02 Fix: add end location to report in no-extra-bind (refs #12334) (#13083) (Milos Djermanovic)
  • 0c20bc0 Fix: check assignment property target in camelcase (fixes #13025) (#13027) (YeonJuan)
  • 8d50a7d Fix: add end location to report in no-prototype-builtins (refs #12334) (#13087) (Milos Djermanovic)
  • 3e4e7f8 Fix: incorrect logic for required parens in no-extra-boolean-cast fixer (#13061) (Milos Djermanovic)
  • aef9488 Fix: allow references to external globals in id-blacklist (fixes #12567) (#12987) (Milos Djermanovic)
  • 4955c50 Fix: remove type arguments in prefer-object-spread (fixes #13058) (#13063) (Milos Djermanovic)
  • dbe357d Fix: check template literal in prefer-numeric-literals (fixes #13045) (#13046) (YeonJuan)
  • 2260611 Fix: added async in allow method in no-empty-function (fixes #12768) (#13036) (Anix)
  • 7224eee Fix: no-plusplus allow comma operands in for afterthought (fixes #13005) (#13024) (Milos Djermanovic)
  • 7598cf8 Fix: Newline before eof when creating config via --init (#12952) (Andreas Lind)
  • 0243549 Fix: camelcase false positive with computed property (fixes #13022) (#13023) (Milos Djermanovic)
  • 6cef0d5 Fix: Check division operator in astUtils.canTokensBeAdjacent (#12879) (Milos Djermanovic)
  • afde78b Fix: curly removes necessary braces between if and else (fixes #12928) (#12943) (Milos Djermanovic)
  • 4797fb2 Fix: arrow-body-style crash with object literal body (fixes #12884) (#12886) (Milos Djermanovic)
  • de14d1c Fix: wrap-iife autofix removes mandatory parentheses (#12905) (Milos Djermanovic)
  • 5775b06 Fix: Optionally allow underscores in member names (#11972) (Edgardo Avilés)
  • 0dfc3ff Fix: add end location to report in no-eval (#12960) (Milos Djermanovic)
  • 1f1424c Fix: fix inconsistently works option in no-extra-parens (fixes #12717) (#12843) (YeonJuan)
  • b5adcaa Fix: make YieldExpression throwable (fixes #12880) (#12897) (YeonJuan)
  • 95e0586 Fix: id-blacklist false positives on renamed imports (#12831) (Milos Djermanovic)
  • dadc892 Fix: operator-assignment crash on adjacent division assignment (#12844) (Milos Djermanovic)
  • a9d92f9 Fix: radix rule crash on disabled globals (#12824) (Milos Djermanovic)
  • 533c114 Fix: multiline-comment-style rule add extra space after * (fixes #12785) (#12823) (Karthik Priyadarshan)
  • 80309c3 Fix: no-constant-condition doesn't introspect arrays (fixes #12225) (#12307) (Sean Gray)
  • de4fa7c Fix: wrong indent at tagged template in indent (fixes #12122) (#12596) (YeonJuan)
  • 16a1c1f Fix: prefer-object-spread false positives with accessors (fixes #12086) (#12784) (Milos Djermanovic)
  • 0d8c0af Fix: improve report location for computed-property-spacing (#12795) (Milos Djermanovic)
  • 756b95d Fix: id-blacklist should ignore ObjectPatterns (fixes #12787) (#12792) (JP Ramassini)
  • 01ff791 Fix: Display pipe character correctly in test output (#12771) (Brad Zacher)
  • 00ddfff Fix: Windows path parsing for JUnit (fixes #12507) (#12509) (Michael Wall)
  • 1aff21b Fix: no-mixed-spaces-and-tabs reports multiline strings (#12566) (Milos Djermanovic)
Documentation
  • b5c8d73 Docs: update 7.0.0 migration guide for consistency (#13267) (Kai Cataldo)
  • 356fdb4 Docs: add migration guide (#12692) (Toru Nagashima)
  • 56d2bee Docs: fix typos (#13204) (Nitin Kumar)
  • 516f253 Docs: Adds import example for object-curly-newline rule (refs #12018) (#13177) (Luke Lewis)
  • b398e0b Docs: add rule comment in prefer-rest-params doc (#13191) (YeonJuan)
  • c41de38 Docs: fix curly multi-or-nest examples with comments (refs #12972) (#13151) (Milos Djermanovic)
  • 57221d5 Docs: fix eslint comment in no-inner-declarations examples (#13152) (Milos Djermanovic)
  • 5dfd4eb Docs: examples with arrow functions in no-return-assign (fixes #13135) (#13138) (Anix)
  • adc8fa8 Docs: clarify exceptions in spaced-comment (fixes #13032) (#13126) (Anix)
  • b228f95 Docs: Update README team and sponsors (ESLint Jenkins)
  • 6c069f9 Docs: Add comments to code block in example (#13089) (Kibeom Kwon)
  • ee1f053 Docs: Fix typo (#13092) (Max Coplan)
  • 76324ac Docs: Add further reading to rule (#13084) (Max Coplan)
  • 3f7c9bf Docs: clarify variables option in no-use-before-define (fixes #12986) (#13017) (Anix)
  • 9ac5b9e Docs: Clarify node_modules is ignored by default (fixes #13006) (#13054) (Mika Kuijpers)
  • 0de91f3 Docs: removed correct code from incorrect eg (#13060) (Anix)
  • af7af9d Docs: Update governance (#13055) (Nicholas C. Zakas)
  • 79ac6cd Docs: added less confusing explanation for func-style (fixes #12900) (#13004) (Anix)
  • b8e20d3 Docs: Mention TypeScript's compiler check (#12903) (Benny Neugebauer)
  • e997f32 Docs: Updated arrow-parens for minor grammar issue (#12962) (Tom)
  • cf14355 Docs: Fix links to custom parsers doc (#12965) (Brandon Mills)
  • f479f6f Docs: References correct config file name (#12885) (Patrick Kilgore)
  • 8d5c434 Docs: fix category descriptions for site generation (fixes #12894) (#12930) (Kai Cataldo)
  • 05380e6 Docs: Remove claim about semicolons from docs (#12944) (Luke Sikina)
  • 824d235 Docs: add errorOnUnmatchedPattern option to CLIEngine (#12834) (Arthur Denner)
  • 33efd71 Docs: Fix spelling mistakes (#12861) (Bryan Mishkin)
  • a5b3c5f Docs: Update README team and sponsors (ESLint Jenkins)
  • d6c313d Docs: add missing eslint comments in prefer-regex-literals examples (#12858) (Milos Djermanovic)
  • aea1729 Docs: Fix anchor links in Node.js API TOC (#12821) (Matija Marohnić)
  • 02fcc05 Docs: Improve sort-keys (#12791) (Steven Vachon)
  • 25eb703 Docs: fix dead link in max-lines rule docs (#12766) (Christian Bundy)
  • 098b67d Docs: fix minor typo in brace-style.md (#12749) (Marko Kaznovac)
  • b23ad0d Docs: change a broken link in working-with-rules.md (#12732) (Damien Cassou)
Dependency Upgrades
  • b98d8bd Upgrade: [email protected] (#13271) (Kai Cataldo)
  • 3eeae56 Upgrade: some (dev) deps (#13155) (薛定谔的猫)
  • 95e1c70 Upgrade: [email protected] (fixes #9366) (#13140) (Kai Cataldo)
  • 2111c52 Upgrade: [email protected] (#13076) (Milos Djermanovic)
  • 95613d4 Upgrade: [email protected] (#13026) (Kai Cataldo)
  • e632c31 Upgrade: several dependencies (#12753) (Toru Nagashima)
Build Related
  • 8d1b4db Build: changelog update for 7.0.0-rc.0 (ESLint Jenkins)
  • 2531b80 Build: changelog update for 7.0.0-alpha.3 (ESLint Jenkins)
  • 2e8f193 Build: changelog update for 7.0.0-alpha.2 (ESLint Jenkins)
  • e9f1073 Build: changelog update for 7.0.0-alpha.1 (ESLint Jenkins)
  • c8c1b2b Build: changelog update for 7.0.0-alpha.0 (ESLint Jenkins)
  • 4e16957 Build: update browser build (#12693) (Toru Nagashima)
  • 827259e Build: package.json update for eslint-config-eslint release (ESLint Jenkins)
Chores
  • 401a687 Chore: fix rules list for prereleases (#13230) (Kai Cataldo)
  • 2ce6bed Chore: added tests for nested arrays (#13145) (Anix)
  • 6b7030b Chore: Run tests on Node.js v14 (#13210) (fisker Cheung)
  • e13256e Chore: use espree.latestEcmaVersion in config-initializer (#13157) (Kai Cataldo)
  • e4f57b7 Chore: add nested array tests for array-element-newline (#13161) (Anix)
  • bc0c02c Chore: added lock files to gitignore (#13015) (Anix)
  • 26267ed Chore: update GitHub Actions (#12984) (Pig Fang)
  • 472025f Chore: update space-before-function-paren in eslint-config-eslint (#12966) (Kai Cataldo)
  • 1907e57 Chore: add Twitter and Open Collective badge (#12877) (Kai Cataldo)
  • b7f0d20 Chore: Use consistent badge style (#12825) (fisker Cheung)
  • 3734a66 Chore: use ids for messages (#12859) (Gareth Jones)
  • 0cae920 Chore: rename shadowed global (#12862) (Tony Brix)
  • 055b80d Chore: Fix typo in complexity.js (#12864) (Kyle Shevlin)
  • 9f39ef0 Chore: typo in PULL_REQUEST_TEMPLATE.md (#12848) (Balázs Orbán)
  • a60d5cd Chore: typo in no-irregular-whitespace.js (#12847) (Balázs Orbán)
  • 691d19a Chore: add missing ecmaVersion 2020/11 type value (#12833) (Piotr Błażejewicz (Peter Blazejewicz))
  • f5b9656 Chore: add test for no-constant-condition (#12836) (Milos Djermanovic)
  • 10a79a6 Chore: Adopt eslint-plugin/require-meta-docs-description internally (#12762) (Bryan Mishkin)
  • 561b6d4 Chore: add prerequisites checklist to PR template (#12790) (Kai Cataldo)
  • 9dfc850 Chore: Refactor to use messageId in a number of rules (#12715) (Brad Zacher)
  • b77b858 Chore: fix separateRequires tests for one-var rule (#12709) (Milos Djermanovic)
  • e4df7df Chore: add JSDoc types for RuleTester test cases (#12325) (Chiawen Chen)
  • 4744397 Chore: remove unused code in max-lines-per-function (#12659) (YeonJuan)
  • 39f5a45 Chore: add test cases for for-direction (#12698) (YeonJuan)
  • b340304 Chore: Add extra test, improve docs (#12492) (Kevin Partington)