Back to all reviewers

Environment variable management

vitejs/vite
Based on 5 comments
Markdown

When working with environment variables in Vite applications, be explicit about variable loading behavior and precedence. Environment variables from `.env` files are always loaded regardless of mode, with mode-specific files (`.env.[mode]`) taking precedence over generic ones.

Configurations Markdown

Reviewer Prompt

When working with environment variables in Vite applications, be explicit about variable loading behavior and precedence. Environment variables from .env files are always loaded regardless of mode, with mode-specific files (.env.[mode]) taking precedence over generic ones.

For type safety, use the TypeScript declaration merging pattern to strongly type your environment variables:

/// <reference types="vite/client" />

// By adding this interface, you can make the type of ImportMetaEnv strict
// to disallow unknown keys.
interface ImportMetaEnv {
  readonly VITE_APP_TITLE: string
  // more env variables...
}

When loading environment variables in config files, be explicit about which prefixes to include:

import { defineConfig, loadEnv } from 'vite'

export default defineConfig(({ mode }) => {
  // Set the third parameter to 'APP_' to load envs with the `APP_` prefix.
  // If necessary, you can set the optional third parameter to '' to load all env regardless of the `VITE_` prefix.
  const env = loadEnv(mode, process.cwd(), 'APP_')

  return {
    // use env variables in config
    define: {
      'process.env.APP_ENV': JSON.stringify(env.APP_ENV)
    }
  }
})

To disable environment variable loading altogether, set envDir: false in your Vite config.

5
Comments Analyzed
Markdown
Primary Language
Configurations
Category

Source Discussions