Skip to content

feat(eslint-config): use @eslintplugin/* packages#1649

Open
gameroman wants to merge 1 commit into
cedarjs:mainfrom
gameroman:eslintplugin
Open

feat(eslint-config): use @eslintplugin/* packages#1649
gameroman wants to merge 1 commit into
cedarjs:mainfrom
gameroman:eslintplugin

Conversation

@gameroman
Copy link
Copy Markdown
Contributor

@gameroman gameroman commented Apr 20, 2026

Switching to more modern, smaller, alternative eslint plugins.
Also see https://github.com/eslint-plugin/eslint-plugins/blob/main/README.md

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 20, 2026

👷 Deploy request for cedarjs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit a92d392

@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented Apr 20, 2026

🤖 Nx Cloud AI Fix

Ensure the fix-ci command is configured to always run in your CI pipeline to get automatic fixes in future runs. For more information, please see https://nx.dev/ci/features/self-healing-ci


View your CI Pipeline Execution ↗ for commit a92d392

Command Status Duration Result
nx run-many -t build:pack --exclude create-ceda... ✅ Succeeded 1s View ↗
nx run-many -t build ✅ Succeeded 4m 23s View ↗
nx run-many -t test --minWorkers=1 --maxWorkers=4 ✅ Succeeded 4m 21s View ↗
nx run-many -t test:types ✅ Succeeded 15s View ↗

☁️ Nx Cloud last updated this comment at 2026-05-20 18:48:59 UTC

@gameroman gameroman changed the title feat: use @eslintplugin/* packages feat(eslint-plugin): use @eslintplugin/* packages Apr 20, 2026
@github-actions github-actions Bot added this to the next-release milestone Apr 20, 2026
@gameroman gameroman changed the title feat(eslint-plugin): use @eslintplugin/* packages feat(eslint-config): use @eslintplugin/* packages Apr 20, 2026
@gameroman gameroman marked this pull request as ready for review April 22, 2026 13:25
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 22, 2026

Greptile Summary

This PR swaps two mature ESLint plugins — eslint-plugin-react@7.37.5 and eslint-plugin-jsx-a11y@6.10.2 — for pre-alpha drop-in replacements from the @eslintplugin npm scope (0.0.1 and 0.0.3), using npm package aliasing so the existing config files require no changes.

  • The new packages shed a large number of transitive dependencies (polyfills for array-includes, es-iterator-helpers, object.entries, jsx-ast-utils, resolve@2.x, etc.), replacing them with leaner @eslintplugin/* equivalents at version 0.0.0.
  • axe-core, which was a production dependency of the original eslint-plugin-jsx-a11y and supplied extended ARIA role/attribute metadata, is absent from the replacement's dependency tree; the practical effect on rule coverage has not been demonstrated in the PR.
  • The docs/implementation-docs/2026-03-26-cedarjs-project-overview.md description of the eslint-config package remains consistent with the changes introduced here.

Confidence Score: 3/5

This PR replaces two mature, widely-adopted ESLint plugins with pre-alpha (0.0.x) alternatives from a new, unverified npm scope; behavioral equivalence with the originals has not been demonstrated and the removal of axe-core from the a11y plugin's dependency tree is an unverified behavioral change for all downstream Cedar projects.

Both replacement packages are at pre-alpha versions from an npm scope with no established provenance, and the PR includes no test output, CI evidence, or eslint --print-config verification showing that plugin:react/recommended, plugin:jsx-a11y/recommended, and the jsx-a11y/aria-role rule resolve correctly with the new packages. The shared eslint-config is consumed by every Cedar project, so a silent runtime failure here would break linting for all downstream users without a clear error trail.

packages/eslint-config/package.json — the two aliased plugin entries and the transitive dependency changes (especially axe-core removal) warrant close scrutiny before merging.

Important Files Changed

Filename Overview
package.json Root devDependency for eslint-plugin-react aliased to @eslintplugin/eslint-plugin-react@0.0.1 via npm alias
packages/eslint-config/package.json Both eslint-plugin-react and eslint-plugin-jsx-a11y replaced with pre-alpha @eslintplugin/* packages (0.0.1 and 0.0.3); axe-core dependency removed from a11y plugin, @eslintplugin/resolve@0.0.0 introduced
yarn.lock Lock file updated to reflect new @eslintplugin/* packages and removal of their former transitive deps (axe-core, array polyfills, es-iterator-helpers, jsx-ast-utils, resolve@2.x, etc.)

Reviews (5): Last reviewed commit: "feat: use `@eslintplugin/*` packages" | Re-trigger Greptile

Comment thread packages/eslint-config/package.json
@gameroman gameroman force-pushed the eslintplugin branch 2 times, most recently from f80fa49 to bddc991 Compare May 6, 2026 19:38
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 6, 2026

Want your agent to iterate on Greptile's feedback? Try greploops.

Comment on lines +62 to +64
"eslint-plugin-jsx-a11y": "npm:@eslintplugin/eslint-plugin-jsx-a11y@0.0.3",
"eslint-plugin-prettier": "5.5.5",
"eslint-plugin-react": "7.37.5",
"eslint-plugin-react": "npm:@eslintplugin/eslint-plugin-react@0.0.1",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Plugin API compatibility not verified

The existing ESLint config files make specific API calls that must be present in the replacement packages:

  • shared.js extends plugin:react/recommended — this requires @eslintplugin/eslint-plugin-react@0.0.1 to export a recommended config object under its configs property.
  • index.js extends plugin:jsx-a11y/recommended (when config.web.a11y is enabled) and directly references the rule name jsx-a11y/aria-role.

If either 0.0.x package does not export these config presets or rule names, every downstream Cedar project that runs ESLint will get a hard failure (Definition for rule 'jsx-a11y/aria-role' was not found or Cannot read properties of undefined (reading 'recommended')). The PR doesn't include any test output or CI evidence confirming that eslint --print-config resolves cleanly with these replacements in place.

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