
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
RuleTesternow supports custombeforeandafterhooks for test cases.- The
complexityrule has a new optionvariantto support modified cyclomatic complexity.
Features
5a6a053feat: update tojitiv2 (#18954) (Arya Emami)17a07fbfeat: Hooks for test cases (RuleTester) (#18771) (Anna Bocharova)2ff0e51feat: Implement alternate config lookup (#18742) (Nicholas C. Zakas)2d17453feat: Implement modified cyclomatic complexity (#18896) (Dmitry Pashkevich)
Bug Fixes
ea380cafix: Upgrade retry to avoid EMFILE errors (#18986) (Nicholas C. Zakas)fdd6319fix: Issues with type definitions (#18940) (Arya Emami)
Documentation
ecbd522docs: Mention code explorer (#18978) (Nicholas C. Zakas)7ea4eccdocs: Clarifying the Use of Meta Objects (#18697) (Amaresh S M)d3e4b2edocs: Clarify how to exclude.jsfiles (#18976) (Milos Djermanovic)57232ffdocs: Mention plugin-kit in language docs (#18973) (Nicholas C. Zakas)b80ed00docs: Update README (GitHub Actions Bot)cb69ab3docs: Update README (GitHub Actions Bot)7fb0d95docs: Update README (GitHub Actions Bot)493348adocs: Update README (GitHub Actions Bot)87a582cdocs: fix typo inid-matchrule (#18944) (Jay)
Chores
555aafdchore: upgrade to@eslint/js@9.12.0(#18987) (Francesco Trotta)873ae60chore: package.json update for @eslint/js release (Jenkins)d0a5414refactor: replace strip-ansi with native module (#18982) (Cristopher)b827029chore: Enable JSON5 linting (#18979) (Milos Djermanovic)8f55ca2chore: Upgrade espree, eslint-visitor-keys, eslint-scope (#18962) (Nicholas C. Zakas)c1a2725chore: update dependency mocha to ^10.7.3 (#18945) (Milos Djermanovic)
