news 2026/7/21 21:41:26

vue3 build如何区分dev ,test,prod的配置文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue3 build如何区分dev ,test,prod的配置文件

在 Vue 3 + Vite 的项目中,区分 dev、test、prod 环境的标准做法是使用环境变量文件和构建模式

这套方案非常成熟,核心思路是:为不同环境准备独立的配置文件,并通过--mode参数让构建工具在打包时自动加载对应的配置

1. 创建环境变量文件

在项目的根目录下,创建以.env.开头的文件。文件名中的developmenttestproduction就对应了不同的模式(mode)。

text

# 项目根目录 .env.development # 开发环境 .env.test # 测试环境 .env.production # 生产环境

然后,在对应的文件中,以VITE_为前缀定义你的变量。只有这个前缀的变量才会暴露给客户端代码,这是出于安全考虑,防止敏感信息泄露。

.env.development示例:

properties

NODE_ENV='development' VITE_APP_TITLE='开发环境' VITE_APP_API_BASE_URL='/dev-api'

.env.test示例:

properties

NODE_ENV='test' VITE_APP_TITLE='测试环境' VITE_APP_API_BASE_URL='/test-api'

.env.production示例:

properties

NODE_ENV='production' VITE_APP_TITLE='生产环境' VITE_APP_API_BASE_URL='/prod-api'

2. 在代码中使用环境变量

在你的 Vue 组件或 JavaScript/TypeScript 文件中,可以通过import.meta.env对象来访问这些变量。

javascript

// 在任何 .vue 或 .ts 文件中 console.log(import.meta.env.VITE_APP_TITLE) // 输出会根据构建模式变化: '开发环境' / '测试环境' / '生产环境' // 常用的内置环境变量 console.log(import.meta.env.MODE) // 当前模式: 'development', 'test', 'production' console.log(import.meta.env.DEV) // 是否为开发模式: true / false console.log(import.meta.env.PROD) // 是否为生产模式: true / false

一个典型的应用场景就是在封装 Axios 时,将baseURL设置为不同的环境变量。

3. 在package.json中配置构建命令

你需要为不同的构建场景配置不同的命令。关键就在于--mode参数,它会告诉 Vite 去加载哪个环境文件。

json

{ "scripts": { "dev": "vite", // 默认加载 .env.development "build": "vite build", // 默认加载 .env.production "build:test": "vue-tsc && vite build --mode test", // 加载 .env.test,用于测试环境打包 "build:prod": "vue-tsc && vite build --mode production" // 加载 .env.production } }

4. 运行与构建

配置完成后,使用对应的命令即可:

  • 开发调试:运行npm run dev,代码将使用开发环境的配置。

  • 测试环境打包:运行npm run build:test,会生成一个使用测试环境配置的部署包。

  • 生产环境打包:运行npm run build:prodnpm run build,将使用生产环境配置进行构建。


⚠️ 几个关键点

  1. NODE_ENVMODE是两回事NODE_ENV是 Node.js 的传统环境变量,影响构建行为(如是否压缩代码);而MODE是 Vite 用来匹配.env.[mode]文件的。通过--mode传参可以同时控制这两者。

  2. 环境变量是字符串:所有从import.meta.env读取的变量都是字符串。如果需要布尔值或数字,需要手动转换。

  3. VITE_前缀是必须的:这是 Vite 的安全机制,确保只有以VITE_开头的变量才会被暴露给前端代码,避免将服务器敏感信息打包到客户端。

💡 备选方案

在一些更灵活或没有 CI/CD 的场景下,也有人会使用一个专门的config.ts文件,通过判断import.meta.env.MODE来导出不同配置,或者在代码里用一个对象来存放所有环境的配置。不过,推荐使用 Vite 官方推荐的.env.[mode]文件方式,它更规范,也更容易维护。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 21:41:01

C++ STL容器性能优化:指针与智能指针实战指南

1. 项目概述:指针与STL容器的性能迷思在C开发中,尤其是处理大规模数据或对性能有严苛要求的场景里,STL容器是我们最得力的助手之一。vector、map、list这些名字早已深入人心。然而,很多开发者,包括一些有经验的程序员&…

作者头像 李华
网站建设 2026/7/20 10:57:40

深入解析TMS320F28002x SCI模块:从UART基础到多处理器通信实战

1. 项目概述:从UART到SCI,嵌入式通信的基石在嵌入式系统开发中,设备间的数据交换是构建复杂功能的基础。无论是传感器数据采集、模块间指令传递,还是系统调试信息的输出,都离不开一种可靠、简单且成本低廉的通信方式。…

作者头像 李华
网站建设 2026/7/20 10:56:26

Citra终极指南:在电脑上完美运行任天堂3DS游戏的完整教程

Citra终极指南:在电脑上完美运行任天堂3DS游戏的完整教程 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra 想要在电脑上重温《精灵宝可梦XY》、《火焰纹章觉醒》等经典3DS游戏吗?Citra模…

作者头像 李华