ESLint v8.x reached end-of-life on 2024-10-05 and is no longer maintained. Upgrade or consider long-term support options

ESLint v9.12.0 released

We just pushed ESLint v9.12.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

Highlights

Experimental configuration file resolution

One of the big changes in ESLint v9.0.0 was the new config system which switched from looking for config files relative to the file being linted to starting the search from the current working directory. While this dramatically decreased the complexity of config file lookup, it also had an unintended side effect: monorepos could no longer include a separate eslint.config.js file in each project directory and then run ESLint with one command from the root. To address this, we’re working on a new configuration file resolution algorithm that more closely mirrors how the eslintrc config system worked.

This new algorithm also starts the search from the file being linted, restoring the monorepo use case and also making it possible to run ESLint from anywhere on any file and get the same results each time. Because this feature is experimental, you’ll need to use the unstable_config_lookup_from_file feature flag, like this:

npx eslint --flag unstable_config_lookup_from_file

For more information on this feature, see Experimental Configuration File Resolution. For more information on using feature flags, see Feature Flags.

Other notable changes

  • RuleTester now supports custom before and after hooks for test cases.
  • The complexity rule has a new option variant to support modified cyclomatic complexity.

Features

Bug Fixes

  • ea380ca fix: Upgrade retry to avoid EMFILE errors (#18986) (Nicholas C. Zakas)
  • fdd6319 fix: Issues with type definitions (#18940) (Arya Emami)

Documentation

  • ecbd522 docs: Mention code explorer (#18978) (Nicholas C. Zakas)
  • 7ea4ecc docs: Clarifying the Use of Meta Objects (#18697) (Amaresh S M)
  • d3e4b2e docs: Clarify how to exclude .js files (#18976) (Milos Djermanovic)
  • 57232ff docs: Mention plugin-kit in language docs (#18973) (Nicholas C. Zakas)
  • b80ed00 docs: Update README (GitHub Actions Bot)
  • cb69ab3 docs: Update README (GitHub Actions Bot)
  • 7fb0d95 docs: Update README (GitHub Actions Bot)
  • 493348a docs: Update README (GitHub Actions Bot)
  • 87a582c docs: fix typo in id-match rule (#18944) (Jay)

Chores

  • 555aafd chore: upgrade to @eslint/js@9.12.0 (#18987) (Francesco Trotta)
  • 873ae60 chore: package.json update for @eslint/js release (Jenkins)
  • d0a5414 refactor: replace strip-ansi with native module (#18982) (Cristopher)
  • b827029 chore: Enable JSON5 linting (#18979) (Milos Djermanovic)
  • 8f55ca2 chore: Upgrade espree, eslint-visitor-keys, eslint-scope (#18962) (Nicholas C. Zakas)
  • c1a2725 chore: update dependency mocha to ^10.7.3 (#18945) (Milos Djermanovic)

The latest ESLint news, case studies, tutorials, and resources.

ESLint v9.14.0 released
2 min read

ESLint v9.14.0 released

We just pushed ESLint v9.14.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.

ESLint v9.13.0 released
1 min read

ESLint v9.13.0 released

We just pushed ESLint v9.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release.