eslint-plugin-vite

July 3, 2026 ยท View on GitHub

ESLint rules for Vite, Vitest, and Vitest bench configuration and runtime patterns.

npm license. npm total downloads. latest GitHub release. GitHub stars. GitHub forks. GitHub open issues. codecov. CI status.

Why this plugin exists

Vite and Vitest both rely on static conventions that are easy to violate accidentally:

  • config helpers such as defineConfig(...) and defineWorkspace(...)
  • client-safe env access through import.meta.env
  • static glob imports through import.meta.glob(...)
  • workspace and benchmark structure in Vitest

eslint-plugin-vite turns those conventions into reviewable lint rules.

Installation

npm install --save-dev @typpi/eslint-plugin-vite eslint

Quick start

import vite from "@typpi/eslint-plugin-vite";

export default [vite.configs.recommended];

Available presets

  • vite.configs.recommended
  • vite.configs.strict
  • vite.configs.all
  • vite.configs.configs
  • vite.configs.client
  • vite.configs.vitest
  • vite.configs["vitest-bench"]

Common compositions

App code that uses import.meta.env and import.meta.glob

import vite from "@typpi/eslint-plugin-vite";

export default [vite.configs.recommended, vite.configs.client];

Vitest workspaces in a monorepo

import vite from "@typpi/eslint-plugin-vite";

export default [vite.configs.recommended, vite.configs.vitest];

Dedicated benchmark suites

import vite from "@typpi/eslint-plugin-vite";

export default [vite.configs.recommended, vite.configs["vitest-bench"]];

Documentation

Rules

RuleFixPreset key
vite/config-require-define-configโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿ“š ๐Ÿงช
vite/import-meta-glob-literalโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐ŸŒ ๐Ÿ“š
vite/no-deprecated-config-optionsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-disabled-vitest-isolationโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-disabled-vitest-typecheckโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-dynamic-import-meta-env-accessโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐ŸŒ ๐Ÿ“š
vite/no-empty-env-prefixโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿ“š
vite/no-empty-optimize-deps-excludeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-empty-optimize-deps-includeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-empty-ssr-externalโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-empty-ssr-noexternalโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-empty-vitest-bench-excludeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿ‘Ÿ
vite/no-empty-vitest-bench-includeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿ‘Ÿ
vite/no-empty-vitest-coverage-includeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-coverage-reporterโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-coverage-reports-directoryโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-excludeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-includeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-project-excludeโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-project-nameโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-vitest-projectsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-empty-worker-pluginsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-implicit-config-flagsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-import-meta-env-in-configโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿ“š ๐Ÿงช
vite/no-mixed-defineworkspace-and-test-projectsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-mixed-test-and-bench-apisโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/no-pass-with-no-testsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-relative-resolve-aliasโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-restricted-import-meta-envโ€”๐Ÿ”ด ๐ŸŸฃ ๐ŸŒ ๐Ÿ“š
vite/no-unsafe-server-optionsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ
vite/no-unsafe-vitest-flagsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-unsupported-project-optionsโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช
vite/no-vitepress-empty-headโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿ“š
vite/no-vitepress-empty-theme-configโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿ“š
vite/no-vitest-bail-and-retry-conflictโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-all-falseโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-clean-falseโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-enabled-false-with-thresholdsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-reporter-text-onlyโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-skip-full-false-in-strictโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-coverage-temp-dir-in-repo-rootโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-default-cache-dir-in-monorepoโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/no-vitest-env-leakage-comboโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-file-parallelism-disabledโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-globalsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-max-workers-zeroโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-min-workers-greater-than-max-workersโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-single-thread-pool-by-defaultโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-timeout-triplet-mismatchโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/no-vitest-ui-in-configโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-unstub-envs-falseโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-unstub-globals-falseโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-vitest-watch-in-configโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-zero-vitest-slow-test-thresholdโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/no-zero-vitest-timeoutโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/prefer-define-projectโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช
vite/prefer-vitest-restore-mocksโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-inline-project-nameโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช
vite/require-vitepress-clean-urls-explicitโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿ“š
vite/require-vitepress-title-or-titletemplateโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿ“š
vite/require-vitest-coverage-provider-when-enabledโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-coverage-reporter-when-enabledโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-coverage-reports-directoryโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-coverage-thresholds-when-enabledโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-environment-match-globsโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-explicit-environmentโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/require-vitest-mock-reset-policyโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-sequence-seed-when-shuffleโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/require-vitest-slow-test-thresholdโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/require-vitest-timeout-tripletโ€”๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช ๐Ÿ‘Ÿ
vite/require-vitest-typecheck-tsconfigโ€”๐Ÿ”ด ๐ŸŸฃ โš™๏ธ ๐Ÿงช
vite/workspace-unique-project-nameโ€”๐ŸŸก ๐Ÿ”ด ๐ŸŸฃ ๐Ÿงช

Scope notes

  • This plugin is flat-config-first.
  • Current rules do not require type-aware ESLint setup.
  • The focus is Vite and Vitest behavior, not framework-specific UI rules.

License

MIT