ESLint v7.0.0 released

by Kai Cataldo - 8 May 2020

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

Features

Enhancements

Bug Fixes

Documentation

Dependency Upgrades

  • 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