Skip to main content

no-relative-resolve-alias

Disallow relative string replacements inside resolve.alias in Vite config files.

Rule catalog ID: R006

Targeted pattern scopeโ€‹

  • vite.config.*
  • shared Vite config fragments

What this rule reportsโ€‹

This rule reports alias replacement strings such as "./src" or "../shared" inside resolve.alias.

Why this rule existsโ€‹

Vite documents filesystem alias replacements as absolute paths.

Relative replacement strings look convenient, but they are fragile and often misread as import-specifier-like paths.

โŒ Incorrectโ€‹

import { defineConfig } from "vite";

export default defineConfig({
resolve: {
alias: {
"@": "./src",
},
},
});

โœ… Correctโ€‹

import path from "node:path";
import { defineConfig } from "vite";

export default defineConfig({
resolve: {
alias: {
"@": path.resolve(import.meta.dirname, "src"),
},
},
});

Behavior and migration notesโ€‹

  • use path.resolve(...) or fileURLToPath(new URL(..., import.meta.url))
  • keep alias replacement values explicit and absolute

ESLint flat config exampleโ€‹

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

export default [vite.configs.configs];

When not to use itโ€‹

Disable this rule only if your repository does not use filesystem alias replacements in Vite.

Package documentationโ€‹

Further readingโ€‹