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 custombefore
andafter
hooks for test cases.- The
complexity
rule has a new optionvariant
to support modified cyclomatic complexity.
Features
5a6a053
feat: update tojiti
v2 (#18954) (Arya Emami)17a07fb
feat: Hooks for test cases (RuleTester) (#18771) (Anna Bocharova)2ff0e51
feat: Implement alternate config lookup (#18742) (Nicholas C. Zakas)2d17453
feat: Implement modified cyclomatic complexity (#18896) (Dmitry Pashkevich)
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 inid-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)