Friday, 10 September, 2021 UTC


Summary

ESLint v8.0.0-beta.2 released
We just pushed ESLint v8.0.0-beta.2, 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
  • The use of reserved words as identifiers in ES3 is now disallowed. This change only affects users with default parser configured with { "ecmaVersion": 3 } in parser options.
  • All core rules have been updated to support ES2022 class fields and private class members. ESLint now fully supports the following ES2022 syntax:
    • Class public instance fields and private instance fields
    • Class public static fields and private static fields
    • Class private instance methods and accessors
    • Class private static methods and accessors
    • RegExp match indices
    • Top-level await
  • The class-methods-use-this rule has a new enforceForClassFields option.
  • The max-classes-per-file rule has a new ignoreExpressions option.
Since this is a beta release, it is not expected to be ready for production, but please try it and report any unexpected issues.

Notes

  • VS Code ESLint extension has added support for ESLint v8.0.0, you'll just need to install the latest v2.1.25 of the extension.
  • We have received reports from plugin authors about problems with testing plugin rules with Jest, as Jest's resolver currently doesn't support subpath exports. For a workaround, please see this comment.

Installing

Since this is a pre-release version, you will not automatically be upgraded by npm. You must specify the next tag when installing:
npm i eslint@next --save-dev 
You can also specify the version directly:
npm i [email protected] --save-dev 

Migration Guide

As there are a lot of changes, we've created a migration guide describing the changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.
Breaking Changes
  • 7cf96cf Breaking: Disallow reserved words in ES3 (fixes #15017) (#15046) (Milos Djermanovic)
Enhancements
  • 88a3952 Update: support class fields in the complexity rule (refs #14857) (#14957) (Milos Djermanovic)
  • 6d1ccb6 Update: enforceForClassFields in class-methods-use-this (refs #14857) (#15018) (YeonJuan)
  • dd10937 Update: added ignoreExpressions option to max-classes-per-file (#15000) (Josh Goldberg)
Bug Fixes
  • 9bd3d87 Fix: semicolon-less style in lines-between-class-members (refs #14857) (#15045) (Milos Djermanovic)
  • f966fe6 Fix: Update semi for class-fields (refs #14857) (#14945) (Nicholas C. Zakas)
  • e9764f3 Fix: no-undef-init should not apply to class fields (refs #14857) (#14994) (Milos Djermanovic)
Documentation
  • 91e82f5 Docs: LintMessage.line and column are possibly undefined (#15032) (Brandon Mills)
  • dd56631 Docs: remove duplicate code path analysis document (#15033) (Milos Djermanovic)
  • 8c61f5a Docs: add info about non-capturing groups to prefer-named-capture-group (#15009) (Andrzej Wódkiewicz)
  • 4338b74 Docs: add no-dupe-class-members examples with class fields (refs #14857) (#15005) (Milos Djermanovic)
  • 88b4e3d Docs: Make clear how rule options are overridden (fixes #14962) (#14976) (Jake Ob)
  • 4165c7f Docs: Clarify Linter vs ESLint in node.js api docs (fixes #14953) (#14995) (Brian Bartels)
  • 80cfb8f Docs: fix typo in migration guide (#14985) (Nitin Kumar)
Dependency Upgrades Chores
  • 921ba1e Chore: fix failing cli test (#15041) (Milos Djermanovic)
  • 143a598 Chore: Switch issues to use forms (#15024) (Nicholas C. Zakas)
  • b4232d4 Chore: Add test that deprecated rules display a deprecated notice (#14989) (TagawaHirotaka)