Update @beanbag/eslint-plugin to use modern config and plugin layout.
Review Request #14653 — Created Oct. 25, 2025 and updated — Latest diff uploaded
When I updated the ESLint plugin to support version 9, I did so in only
the most minimal way. This ended up requiring that consumers install an
additional package (@eslint/eslintrc) and useFlatCompatin their
configurations.This change updates our plugin to actually be a modern plugin with
modern shared configuration:
- Each of our predefined config layers is itself a flat config.
- Configs are exported as
plugin.configs.XXX. - Our cascading glob configs have been updated to use
**/..., which makes
it properly detect said files no matter where they are. This means we no
longer have to do things like unversally include tests globals, since
the jasmine block will be loaded when its supposed to be. - Moved some things from
devDependenciestodependenciesto reduce
what consumers have to install themselves.
There are also some changes to the build process:
- Use rollup instead of invoking babel directly.
- Provide ESM and CJS exports in addition to UMD.
- Generate and provide type definitions.
I've also made a couple tweaks to the rules themselves:
- Added some additional stuff to indent ignore rules to avoid issues
with complex generic class definitions. - Switch ES6
quotesrule to use@stylistic/quotes. - Add a configuration for
@typescript-eslint/no-unused-varsto match
the JS one, and added underscore prefixes to allow us to ignore things
even that aren't parameters or locals (for example, inside TS generic
definitions). - Fixed links to
@stylisticdocs to link to the latest docs instead of
an older version that we weren't even using.
- Built the plugin.
- Used this from all of our other packages.