⚙️ 前端环境变量与配置管理实战指南:从开发到上线都不踩坑!
你是否在开发、测试、预发、生产之间疯狂切换接口地址?是否为了某个配置写了一堆 if 判断?环境变量配置混乱,是前端项目「部署上线出 Bug」的常见根源之一!
📦 什么是环境变量?
环境变量(Environment Variables)是在构建或运行时注入到应用中的配置信息,通常用于区分开发/测试/生产等不同环境下的参数。
例如:
VITE_API_BASE_URL=https://api.test.com
VITE_APP_VERSION=1.2.3
🛠 主流框架如何使用环境变量?
| 框架 | 变量前缀 | 特性说明 |
|---|---|---|
| Vite | VITE_ | 只能访问以 VITE_ 开头的变量 |
| Vue CLI | VUE_APP_ | 内置 .env.* 机制 |
| Create React App | REACT_APP_ | 只能访问 REACT_APP_ 开头的变量 |
| Next.js | NEXT_PUBLIC_ | NEXT_PUBLIC_ 可被前端读取 |
📁 多环境文件组织规范
✅ 推荐结构(以 Vite 为例):
.env # 默认开发环境(vite preview)
.env.development # 本地开发
.env.test # 测试环境
.env.staging # 预发环境
.env.production # 正式环境
启动指定环境:
# 本地开发
vite --mode development
# 构建测试
vite build --mode test
🧠 变量使用方式
console.log(import.meta.env.VITE_API_BASE_URL);
或者封装一下更方便:
export const API_BASE = import.meta.env.VITE_API_BASE_URL;
export const IS_DEV = import.meta.env.MODE === 'development';
🧩 环境变量应用场景示例
| 配置项 | 示例值 |
|---|---|
| 接口地址 | VITE_API_BASE_URL=https://api.xxx.com |
| 构建标识 | VITE_BUILD_TIME=2024-06-25 13:00 |
| 静态资源前缀 | VITE_CDN_PREFIX=https://cdn.xxx.com/ |
| 上报开关 | VITE_TRACKING=true |
| 项目版本号 | VITE_APP_VERSION=2.1.0 |
🧱 实战案例:多环境接口配置
步骤一:配置 .env.* 文件
# .env.development
VITE_API_BASE_URL=http://localhost:3000
# .env.production
VITE_API_BASE_URL=https://api.example.com
步骤二:统一封装 API 工具
const BASE_URL = import.meta.env.VITE_API_BASE_URL;
export const fetchUser = (id: string) => {
return fetch(`${BASE_URL}/users/${id}`).then(res => res.json());
};
再也不用担心上线时忘改接口地址!
🔐 安全性注意事项
| 类型 | 说明 |
|---|---|
| 构建时注入变量 | 可被前端代码访问,打包进 bundle |
| 运行时注入变量 | 更安全,推荐使用 window.__CONFIG__ 实现 |
✅ 示例:运行时注入变量(适用于部署阶段变更)
<script>
window.__CONFIG__ = {
apiBaseUrl: 'https://api.prod.com',
appVersion: '2.1.0'
};
</script>
然后在代码中读取:
const baseUrl = window.__CONFIG__.apiBaseUrl;
适合部署时根据环境动态替换,而不用重新打包。
📦 高阶优化建议
✅ 配合 CI/CD 注入变量
在 GitLab CI、GitHub Actions 等持续集成工具中自动注入:
VITE_GIT_COMMIT=$CI_COMMIT_SHA
VITE_BUILD_ENV=$CI_ENVIRONMENT_NAME
✅ 动态渲染构建信息
console.log(`Version: ${import.meta.env.VITE_APP_VERSION}`);
你甚至可以用它在页脚显示版本号、构建时间等信息。
✅ 总结
| 技术点 | 说明 |
|---|---|
| 多环境区分 | .env.* 文件配合 --mode 使用 |
| 安全前缀限制 | 只能读取带 VITE_ / REACT_APP_ 等前缀的变量 |
| 运行时注入方式 | 使用 window.__CONFIG__ 方式更灵活、安全 |
| CI/CD 集成 | 可自动注入构建信息、环境标识、提交记录等 |
🔚 一句话总结:
环境变量不是“辅助工具”,而是前端工程中配置管理与部署安全的核心基建。用好了,你的前端就能稳定、灵活、可控地上线!