Independent of the blockers, and deliverable now. This is the cost of keeping ESLint that consumers feel today.
js/package.json declares every ESLint plugin as a regular dependency, including eslint-plugin-vue, eslint-plugin-vuejs-accessibility, eslint-plugin-pinia, eslint-plugin-better-tailwindcss and vue-eslint-parser. That was chosen deliberately, so plugin versions are pinned centrally and adoption needs no per-repository plugin list. The cost is that a repository with no .vue files anywhere — docker-swarm-deployment-action, teams-agent — still installs the whole Vue lint toolchain to use the formatter.
Options
- Move the Vue-only plugins to
peerDependencies with peerDependenciesMeta.optional: true, and have ./eslint/vue fail with a clear message when they are absent. Vue repositories then list four plugins themselves, which is the version drift this package exists to remove.
- Split a second package,
@matchory/coding-style-vue, that owns the Vue surface. Clean separation, but a second version line to keep aligned.
- Accept the install weight until ESLint goes away entirely, and close this as wontfix.
Recommendation
Option 3 unless someone actually complains. The weight is dev-only, and options 1 and 2 both reintroduce a version-drift surface to solve a disk-space problem. Worth reconsidering if this milestone stalls for more than a couple of quarters.
Definition of done
A recorded decision, and if it is option 1 or 2, the implementation plus a README note.
Independent of the blockers, and deliverable now. This is the cost of keeping ESLint that consumers feel today.
js/package.jsondeclares every ESLint plugin as a regulardependency, includingeslint-plugin-vue,eslint-plugin-vuejs-accessibility,eslint-plugin-pinia,eslint-plugin-better-tailwindcssandvue-eslint-parser. That was chosen deliberately, so plugin versions are pinned centrally and adoption needs no per-repository plugin list. The cost is that a repository with no.vuefiles anywhere —docker-swarm-deployment-action,teams-agent— still installs the whole Vue lint toolchain to use the formatter.Options
peerDependencieswithpeerDependenciesMeta.optional: true, and have./eslint/vuefail with a clear message when they are absent. Vue repositories then list four plugins themselves, which is the version drift this package exists to remove.@matchory/coding-style-vue, that owns the Vue surface. Clean separation, but a second version line to keep aligned.Recommendation
Option 3 unless someone actually complains. The weight is dev-only, and options 1 and 2 both reintroduce a version-drift surface to solve a disk-space problem. Worth reconsidering if this milestone stalls for more than a couple of quarters.
Definition of done
A recorded decision, and if it is option 1 or 2, the implementation plus a README note.