在Vite中使用环境变量定义的变量有两种典型方式,分别用户

  • 在配置文件中(vite.config.ts/js)使用环境变量
  • 在源码(如组件或业务文件)中使用环境变量

# 在vite.config.ts中使用环境变量

Vite会自动加载项目根目录下的.env文件(比如.env,.env.production, .env.development)等,你可以通过loadEnv来获取环境变量

示例

// vite.config.ts
import { defineConfig, loadEnv } from 'vite'

export default defineConfig(({ mode }) => {
    // 加载环境变量,mode 是 'development', 'production'等
    const env = loadEnv(mode, process.cwd());

    return {
        base: env.VITE_PUBLIC_PATH, // 使用.env 文件中的 VITE_PUBLIC_PATH 变量
        define: {
            __APP_ENV__: JSON.stringify(env.VITE_APP_ENV) //  也可以手动注入全局变量
        }
    }
})

注意:Vite只会自动暴漏以 Vite_开头的变量给客户端使用,其他变量只在 vite.config中手动处理

# 在源码中使用环境变量

使用 import.meat.env

console.log(import.meta.env.VITE_API_BASE_URL);

只要 .env 文件中定义了

VITE_API_BASE_URL=https://api.example.com

就可以在Vue/js/ts文件中这样使用

# 示例.ENV文件

创建.env 文件放在项目更目录下,例如

# .env.development
VITE_API_BASE_URL=https://dev-api.example.com
VITE_PUBLIC_PATH=/
VITE_APP_ENV=development

# .env.production
VITE_API_BASE_URL=https://api.example.com
VITE_PUBLIC_PATH=/prod/
VITE_APP_ENV=production

# 总结

场景 用法 注意
vite.config.ts中 loadEnv(mode, process.cwd()) 需手动加载,适用于构建配置
源码中使用变量 import.meta.env.VITE_XXX 仅暴漏以Vite_开头的变量