Skip to content

build(deps-dev): bump ESLint to v10#29933

Draft
caugner wants to merge 5 commits into
mainfrom
bump-eslint-v10
Draft

build(deps-dev): bump ESLint to v10#29933
caugner wants to merge 5 commits into
mainfrom
bump-eslint-v10

Conversation

@caugner

@caugner caugner commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Bump ESLint to v10. The blocker was eslint-plugin-import, whose eslint peer is capped at ^9 with no v10 release, so it is replaced with the maintained fork eslint-plugin-import-x. Split into focused commits:

  • Remove the unused, long-deprecated eslint-plugin-node (never referenced in eslint.config.js).
  • Migrate eslint-plugin-importeslint-plugin-import-x (^4.17.0, the first release supporting ESLint ^10). All import/* rules and the resolver setting map 1:1 to the import-x/* namespace.
  • Attach cause when re-throwing in scripts/release/changes.js (required by ESLint 10's new preserve-caught-error rule).
  • Disable no-useless-assignment (new in eslint:recommended); it flags intentional dead stores that would need out-of-scope behavioral changes.
  • Bump eslint ~9.39.1~10.5.0, @eslint/js^10.0.1, eslint-plugin-unicorn ^65^69, eslint-plugin-promise ~7.2.1~7.3.0.

Test results and supporting details

npm test passes: ESLint reports 0 errors, tsc --noEmit passes, and all 300 unit tests pass. npm install resolves with no ERESOLVE peer conflicts.

Related issues

Part of mdn/fred#1291.

The plugin is listed in `devDependencies` but is never referenced in
`eslint.config.js`. It is also long-deprecated (superseded by
`eslint-plugin-n`) and caps its `eslint` peer at older majors, which
would obstruct an ESLint 10 upgrade.
@github-actions github-actions Bot added infra Infrastructure issues (npm, GitHub Actions, releases) of this project dependencies Pull requests that update a dependency package or file. scripts Issues or pull requests regarding the scripts in scripts/. size:xl [PR only] >1000 LoC changed labels Jun 26, 2026
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Tip: Review these changes grouped by change (recommended for most PRs), or grouped by feature (for large PRs).

caugner added 4 commits June 26, 2026 18:36
Replace `eslint-plugin-import` with the maintained fork
`eslint-plugin-import-x`. Upstream `eslint-plugin-import` caps its
`eslint` peer at `^9` with no ESLint 10 release, whereas
`eslint-plugin-import-x@4.17.0` supports `^10.0.0`, unblocking the
upcoming ESLint 10 bump.

All `import/*` rules and the resolver setting map 1:1 to the
`import-x/*` namespace. The manual plugin registration is dropped
because `plugin:import-x/recommended` already defines the namespace,
which the stricter config array would otherwise reject as a redefine.
Bump `eslint` `~9.39.1` → `~10.5.0`, `@eslint/js` → `^10.0.1`,
`eslint-plugin-unicorn` `^65` → `^69`, and `eslint-plugin-promise`
`~7.2.1` → `~7.3.0`. All remaining ESLint plugins already declare
`^10` support, so no further bumps are required.
Pass the caught error as `cause` to the wrapping `Error` in
`getDiff` so the original failure is preserved in the error chain.
Also required by ESLint 10's `preserve-caught-error` recommended rule.
ESLint 10 promotes `no-useless-assignment` into `eslint:recommended`.
It flags intentional dead stores that document intent (e.g. the
`previousKey` resets in `scripts/diff-flat.js`); satisfying it would
require out-of-scope behavioral changes, so disable it ahead of the
ESLint 10 bump.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency package or file. infra Infrastructure issues (npm, GitHub Actions, releases) of this project scripts Issues or pull requests regarding the scripts in scripts/. size:xl [PR only] >1000 LoC changed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant