Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Lazy Loading Rules #2732

Open
mr-sanders opened this issue Apr 3, 2025 · 0 comments
Open

Support Lazy Loading Rules #2732

mr-sanders opened this issue Apr 3, 2025 · 0 comments

Comments

@mr-sanders
Copy link

Tell us about your environment

  • ESLint version: 9.22.0
  • eslint-plugin-vue version: 10.0.0
  • Vue version: 2.7.16
  • Node version: 22.14.0

The problem you want to solve.
I would like to run a small subset of fixable stylistic eslint-plugin-vue rules in addition to a Prettier run. The goal is to run only the necessary rules to ensure fast execution, particularly in a Git pre-commit hook. It should also speed up the general linting process agains the rules in shared configurations. This approach should also improve the general linting performance when using shared configurations. Additionally, it would give us the ability to skip loading rules already covered by code formatters.

Your take on the correct solution to problem.
Introduce support for lazy loading of rules, following the example set by the ESLint repository's LazyLoadingRuleMap.

Additional context

Currently, all rules are loaded eagerly, which leads to unnecessary memory usage and slower startup times, especially in configurations using only a subset of rules. Furthermore, the lack of lazy loading interferes with the ESLint core's existing lazy-loading behavior, where core rules are loaded on demand.

ESLint Config

import pluginVue from 'eslint-plugin-vue';

export default [
  ...pluginVue.configs['flat/base'],
];

eslint ./src/App.vue --debug

Expected Result
no eslint core rules are loaded

Actual Result

  ...
  eslint:rules Loading rule 'camelcase' (remaining=289) +0ms
  eslint:rules Loading rule 'dot-notation' (remaining=288) +17ms
  eslint:rules Loading rule 'eqeqeq' (remaining=287) +3ms
  eslint:rules Loading rule 'no-console' (remaining=286) +26ms
  eslint:rules Loading rule 'no-constant-condition' (remaining=285) +1ms
  eslint:rules Loading rule 'no-empty-pattern' (remaining=284) +20ms
  eslint:rules Loading rule 'no-implicit-coercion' (remaining=283) +3ms
  eslint:rules Loading rule 'no-loss-of-precision' (remaining=282) +3ms
  eslint:rules Loading rule 'no-restricted-syntax' (remaining=281) +18ms
  eslint:rules Loading rule 'no-sparse-arrays' (remaining=280) +6ms
  eslint:rules Loading rule 'no-useless-concat' (remaining=279) +24ms
  eslint:rules Loading rule 'object-shorthand' (remaining=278) +11ms
  eslint:rules Loading rule 'prefer-template' (remaining=277) +10ms
  ...
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

No branches or pull requests

1 participant