Skip to content

feat(linter): default to ESLint v10 for new workspaces and projects#35304

Draft
leosvelperez wants to merge 2 commits intomasterfrom
nxc-4017
Draft

feat(linter): default to ESLint v10 for new workspaces and projects#35304
leosvelperez wants to merge 2 commits intomasterfrom
nxc-4017

Conversation

@leosvelperez
Copy link
Copy Markdown
Member

Current Behavior

Nx generators scaffold ESLint projects with ESLint v9 and its ecosystem. When run in an existing workspace, the same generators overwrite ecosystem packages with hardcoded v9 pins instead of respecting what the user already has installed.

Expected Behavior

  • New workspaces and projects scaffold with ESLint v10 by default, along with a peer-compatible ecosystem (typescript-eslint, @eslint/js, @eslint/eslintrc, @eslint/compat, eslint-plugin-vue, @vue/eslint-config-typescript, etc.).
  • Existing workspaces on ESLint v9 keep working unchanged. Ecosystem packages installed by Nx generators are pinned to ranges compatible with ESLint v9.
  • Existing workspaces on ESLint v10 get ecosystem packages pinned to ranges compatible with ESLint v10.
  • In all cases, packages already installed by the user are preserved verbatim — generators no longer silently upgrade installed versions.

Implementation Notes

Version pins are now resolved through per-package compat maps keyed on the installed ESLint major, mirroring the @nx/angular approach. Adding support for a future ESLint major reduces to updating a single data structure.

@leosvelperez leosvelperez self-assigned this Apr 15, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 15, 2026

Deploy Preview for nx-docs ready!

Name Link
🔨 Latest commit 811d4c2
🔍 Latest deploy log https://app.netlify.com/projects/nx-docs/deploys/69e1f5428d15230008ff09a3
😎 Deploy Preview https://deploy-preview-35304--nx-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 15, 2026

Deploy Preview for nx-dev ready!

Name Link
🔨 Latest commit 811d4c2
🔍 Latest deploy log https://app.netlify.com/projects/nx-dev/deploys/69e1f542ebd98900080de35b
😎 Deploy Preview https://deploy-preview-35304--nx-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@nx-cloud
Copy link
Copy Markdown
Contributor

nx-cloud Bot commented Apr 15, 2026

View your CI Pipeline Execution ↗ for commit 811d4c2

Command Status Duration Result
nx affected --targets=lint,test,build,e2e,e2e-c... ❌ Failed 42m 13s View ↗
nx run-many -t check-imports check-lock-files c... ✅ Succeeded 3s View ↗
nx-cloud record -- pnpm nx-cloud conformance:check ✅ Succeeded 17s View ↗
nx build workspace-plugin ✅ Succeeded <1s View ↗
nx-cloud record -- nx sync:check ✅ Succeeded 24s View ↗
nx-cloud record -- nx format:check ✅ Succeeded 15s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-17 09:41:26 UTC

New workspaces and projects now scaffold with ESLint v10 and its ecosystem
(typescript-eslint, @eslint/js, @eslint/eslintrc, @eslint/compat, and the
Vue/Angular lint stacks). Existing workspaces continue to work with their
installed ESLint version: dependency additions keep installed versions
untouched and new ecosystem packages are pinned to a range compatible with
the workspace's ESLint major.

Version pins are now resolved through per-package compat maps keyed on the
installed ESLint major, mirroring the @nx/angular approach, so future
majors can be added by updating a single data structure.
Pin ESLint v8 on fresh workspaces when eslintrc is explicitly requested,
and error out when v10+ is already installed, since v10 drops native
eslintrc support.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant