OBSERVABILITY Signal 453
eslint-rspack-plugin 5.0.0 Ships as a Pure ESM Package, Aligning with the Rstack Ecosystem
eslint-rspack-plugin 5.0.0 is now distributed only as a pure ESM package, dropping its CommonJS build.
Projects that still rely on a CommonJS import of the plugin will need to update their build chain or stay on an older version. The change aligns the plugin with Rspack 2.0 and the broader Rstack ecosystem, but it also reinforces the recommendation to run linting outside the bundler to avoid slower build times.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
The plugin is published solely as ESM, removing its previous CommonJS bundle.
Node 20+ can load the ESM version without code changes, but older Node runtimes that lack ESM support will break.
Running ESLint inside the bundler can lengthen builds, so a separate lint step or a faster alternative like Rslint is advised.
THE READ
What elseif makes of it.
Version 5.0.0 re-packages eslint-rspack-plugin as a pure ESM module, mirroring the shift made in Rspack 2.0. By eliminating the CommonJS build, the distribution becomes simpler and more consistent with current Node.js module resolution, but any project still using require() on the plugin will encounter load errors unless they upgrade the runtime or the import style.
For environments running Node 20 or later, the change is largely transparent because those runtimes can import ESM modules via the require-esm interop. Engineers should verify that their toolchain (e.g., ts-node, Babel, or other loaders) respects ESM entry points, but no source-code modifications are mandated for typical usage patterns.
The plugin continues to invoke ESLint during Rspack compilation and only re-runs on files changed in watch mode. However, the README warns that this in-build linting can increase overall build time, echoing broader ecosystem advice to separate linting from the bundling step for performance reasons.
Teams focused on build speed may consider the Rstack-provided Rslint, a TypeScript-first linter written in Go that claims substantially faster execution. Switching to a dedicated lint script, or to Rslint, avoids the performance penalty of bundler-integrated linting while preserving linting quality.
Upgrading from the 4.x line requires testing the pure ESM shift against the existing CI pipeline and, where feasible, adopting ESLint’s flat config via the configType option. Projects that cannot move to Node 20 or that depend on the plugin’s CommonJS entry must remain on the older version until they can update their runtime.
Written by elseif from the cluster below · checked for specifics the sources never containedTHE CLUSTER
↗