Vite 环境变量及本地环境

本文介绍了Vite项目中环境变量的配置方法,包括envDir、loadEnv、defineConfig的用法,以及如何通过.env文件区分本地、测试、灰度和生产环境。通过设置.env.development和.env.production文件,可以方便地管理不同环境的配置。在应用中,通过loadEnv获取环境变量,并在defineConfig中使用command和mode参数进行条件判断,实现环境的动态适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vite 环境变量的配置主要是为了本地开发区分环境的配置:本地、测试、灰度、生产等的判断,使用到的配置有:

1、envDir 这个配置是用来加载你放置.env文件的路径。说明文档:配置 Vite {#configuring-vite} | Vite中文网

2、loadEnv ,加载方式:import { defineConfig, loadEnv } from 'vite',loadEnv接收三个参数,第一个是.env后面的名字,第二个是绝对路径,第三个参数是你环境变量名的前缀,在vite中默认是VITE_。

比如你是.env.abc 就可以loadEnv(‘abc’, process.cwd(), 'ENV');

这样环境变量名其实就是ENV_QWER这种,文件名叫.env.abc。这只是个介绍,一般起文件名都是:.env.development 

英文版的文档有,中文搜不到:Configuring Vite | Vite

3、defineConfig 这个可以传入一个方法,方法可以接收一个对象,对象中常用两个参数:command, mode ,详见文档:配置 Vite {#configuring-vite} | Vite中文网

command 常用的:server(run dev) 和build(run build),官网上只写了这两个参数。

mode 常用的:development 和 production 在 config 中指定此项将覆盖serve 和 build的默认模式。该值也可以通过命令行--mode选项覆盖。

4、其他的参照:Env Variables and Modes | Vite

使用方式

在根目录创建.env.development 文件夹,里面内容:

# 测试

ENV_TARGET=https:///stage.baidu.com

# 开发

# ENV_TARGET=https:///dev.baidu.com

# 生产

#ENV_TARGET=https://www.baidu.com

使用:

其中 defineConfig传入的方法内可以接收一个对象,这个对象可以获取command和mode这两个属性,所以一般.env的文件命名是.env.development 和.env.production 因为这样直接将mode传入就可以了。

获取环境变量。

const env = loadEnv(mode, process.cwd(), 'ENV');

这个源码不是很多,我贴出来大家看看:

const envFiles = [
            /** mode local file */ `.env.${mode}.local`,
        /** mode file */ `.env.${mode}`,
        /** local file */ `.env.local`,
        /** default file */ `.env`
    ];

这段代码写的就是你传入mode的文件名:

  for (const key in process.env) {
        if (prefixes.some((prefix) => key.startsWith(prefix)) &&
            env[key] === undefined) {
            env[key] = process.env[key];
        }
    }

这里会遍历,将所有的环境变量中以prefixes变量开头的,都加载到env这个对象中。

 for (const file of envFiles) {
        const path = lookupFile(envDir, [file], { pathOnly: true, rootDir: envDir });
        if (path) {
            const parsed = dotenv.parse(fs__default.readFileSync(path), {
                debug: ((_a = process.env.DEBUG) === null || _a === void 0 ? void 0 : _a.includes('vite:dotenv')) || undefined
            });
            // let environment variables use each other
            main({
                parsed,
                // prevent process.env mutation
                ignoreProcessEnv: true
            });
            // only keys that start with prefix are exposed to client
            for (const [key, value] of Object.entries(parsed)) {
                if (prefixes.some((prefix) => key.startsWith(prefix)) &&
                    env[key] === undefined) {
                    env[key] = value;
                }
                else if (key === 'NODE_ENV' &&
                    process.env.VITE_USER_NODE_ENV === undefined) {
                    // NODE_ENV override in .env file
                    process.env.VITE_USER_NODE_ENV = value;
                }
            }
        }
    }

遍历envFiles 文件列表,判断如果有对应路径的话,读取路径内容,并取出prefix 开头的环境变量,并返回。

在 TypeScript 项目中使用和管理环境变量,通常涉及以下几个方面:创建环境变量文件、访问环境变量、为环境变量提供类型提示以及根据不同的构建环境配置变量。 ### 创建 `.env` 文件 在项目根目录下创建 `.env` 文件来存储环境变量Vite 支持多种环境变量文件格式,例如: - `.env`:默认的环境变量文件。 - `.env.local`:本地覆盖文件(不会被提交到版本控制中)。 - `.env.[mode]`:特定模式下的环境变量文件,例如 `.env.development` 和 `.env.production`。 在这些文件中定义变量时,需要以 `VITE_` 开头(如果使用 Vite 的话),例如: ``` VITE_API_URL=https://api.example.com VITE_DEBUG_MODE=true ``` ### 访问环境变量 在代码中可以通过 `import.meta.env` 来访问这些环境变量。例如,在 Vue 3 或其他基于 Vite 的项目中: ```typescript const apiUrl = import.meta.env.VITE_API_URL; console.log(`API URL: ${apiUrl}`); ``` 需要注意的是,只有以 `VITE_` 开头的变量才会暴露给客户端[^2]。 ### 类型提示配置 为了获得更好的开发体验,可以在 TypeScript 项目中为这些环境变量添加类型声明。可以通过创建一个 `.d.ts` 文件(如 `env.d.ts`)来定义这些变量的类型: ```typescript /// <reference types="vite/client" /> interface ImportMetaEnv { readonly VITE_API_URL: string; readonly VITE_DEBUG_MODE: boolean; } interface ImportMeta { readonly env: ImportMetaEnv; } ``` 这样,在使用 `import.meta.env` 时就能获得自动补全和类型检查的支持[^2]。 ### 环境变量与不同构建环境的配合 可以根据不同的构建环境配置不同的变量。例如,创建 `.env.development` 和 `.env.production` 文件,并分别设置对应的变量值。Vite 会根据当前模式自动加载相应的环境变量文件。 假设在 `.env.development` 中定义了: ``` VITE_API_URL=http://localhost:3000 ``` 而在 `.env.production` 中定义了: ``` VITE_API_URL=https://prod-api.example.com ``` 在构建时,Vite 会根据当前模式加载正确的变量[^2]。 ### 编译与运行环境准备 确保 Node.js 已经安装并配置好环境变量。此外,还需要全局安装 TypeScript 编译器: ```bash npm install -g typescript ``` 同时,可以使用 VS Code 的调试功能,通过配置 `launch.json` 文件来支持调试带有环境变量的 TypeScript 项目[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值