news 2026/4/16 14:31:11

vue2和3分别如何在脚手架环境中设置环境变量?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue2和3分别如何在脚手架环境中设置环境变量?

Vue2 和 Vue3 配置环境变量的核心差异在于脚手架工具:Vue2 仅基于@vue/cli(Vue CLI),Vue3 则分为@vue/cli版和Vite版(Vite 是 Vue3 官方推荐的新一代脚手架)。以下是分场景的详细配置方法,包含文件规范、配置规则、使用方式和自定义环境。

一、Vue2(基于 Vue CLI)

Vue2 脚手架由@vue/cli构建,环境变量遵循 Vue CLI 官方规范,核心是「文件命名+前缀限制」。

1. 环境文件命名规范(必须放在项目根目录)
文件名称生效环境说明
.env所有环境通用优先级最低
.env.development开发环境(默认)npm run serve时生效
.env.production生产环境(默认)npm run build时生效
.env.test测试环境(需手动配置)自定义环境,需配启动脚本
.env.local本地私有环境(通用)会被 git 忽略,优先级高
.env.development.local本地开发私有环境覆盖.env.development
2. 配置规则
  • 环境变量必须以VUE_APP_为前缀(Vue CLI 强制要求,非前缀变量不会被打包);
  • 支持简单的键值对,不支持嵌套对象;
  • 注释用#开头。

示例:创建 .env.development(开发环境)

# 开发环境接口地址 VUE_APP_BASE_URL = http://localhost:3000/api # 开发环境标识 VUE_APP_ENV = development # 功能开关 VUE_APP_DEBUG = true

示例:创建 .env.production(生产环境)

# 生产环境接口地址 VUE_APP_BASE_URL = https://api.xxx.com # 生产环境标识 VUE_APP_ENV = production # 功能开关 VUE_APP_DEBUG = false
3. 环境变量的使用方式
(1)在 Vue 组件/JS 文件中使用
// 组件中exportdefault{mounted(){console.log(process.env.VUE_APP_BASE_URL);// 输出对应环境的接口地址console.log(process.env.VUE_APP_DEBUG);// 注意:值是字符串,需手动转布尔(如 JSON.parse)}}
(2)在 vue.config.js 中使用

Vue CLI 配置文件中可直接通过process.env读取:

// vue.config.jsmodule.exports={devServer:{proxy:{'/api':{target:process.env.VUE_APP_BASE_URL,// 读取环境变量changeOrigin:true,pathRewrite:{'^/api':''}}}}}
4. 自定义环境(如测试环境)

步骤1:创建.env.test文件

VUE_APP_BASE_URL = https://test-api.xxx.com VUE_APP_ENV = test

步骤2:修改package.json的启动脚本

{"scripts":{"serve":"vue-cli-service serve",// 默认开发环境"serve:test":"vue-cli-service serve --mode test",// 测试环境"build":"vue-cli-service build",// 默认生产环境"build:test":"vue-cli-service build --mode test"// 打包测试环境}}

步骤3:启动/打包测试环境

npmrun serve:test# 启动测试环境npmrun build:test# 打包测试环境

二、Vue3(分 2 种脚手架)

Vue3 支持两种脚手架:@vue/cli(和 Vue2 兼容)、Vite(官方推荐,新一代工具),两者环境变量配置差异较大。

场景1:Vue3 + Vue CLI(和 Vue2 几乎一致)
  • 环境文件命名、前缀(VUE_APP_)、使用方式(process.env)完全和 Vue2 一致;
  • 唯一差异:Vue3 组件中可在<script setup>中直接使用process.env
    <script setup> console.log(process.env.VUE_APP_BASE_URL); </script>
场景2:Vue3 + Vite(重点)

Vite 是 Vue3 推荐的脚手架,环境变量规则和 Vue CLI 不同,核心是「前缀VITE_+import.meta.env读取」。

1. 环境文件命名规范(项目根目录)
文件名称生效环境说明
.env所有环境通用优先级最低
.env.development开发环境(默认npm run dev
.env.production生产环境(默认npm run build
.env.test测试环境(需手动配置)
.env.local本地私有环境会被 git 忽略
2. 配置规则
  • 变量必须以VITE_为前缀(Vite 强制要求,可通过envPrefix自定义);
  • 支持多行字符串、注释(#开头);
  • 无需安装额外依赖,Vite 内置环境变量解析。

示例:.env.development

# 开发环境接口地址 VITE_BASE_URL = http://localhost:3000/api # 开发环境名称 VITE_APP_ENV = development # 多行字符串示例 VITE_APP_DESC = > 这是多行描述 适用于长文本配置

示例:.env.production

VITE_BASE_URL = https://api.xxx.com VITE_APP_ENV = production
3. 环境变量的使用方式
(1)在 Vue 组件/JS 文件中使用

Vite 不支持process.env(浏览器环境无process对象),需用import.meta.env

<!-- <script setup> 语法 --> <script setup> // 直接读取 console.log(import.meta.env.VITE_BASE_URL); // 布尔值转换(Vite 环境变量值均为字符串) const isDebug = import.meta.env.VITE_APP_DEBUG === 'true'; </script> <!-- 选项式 API --> <script> export default { mounted() { console.log(import.meta.env.VITE_BASE_URL); } } </script>
(2)在 vite.config.js 中使用

Vite 配置文件中需通过loadEnv手动加载环境变量(因为配置文件运行在 Node 环境,无法直接用import.meta.env):

// vite.config.jsimport{defineConfig,loadEnv}from'vite';importvuefrom'@vitejs/plugin-vue';exportdefaultdefineConfig(({mode})=>{// 加载环境变量:参数1=环境模式,参数2=项目根目录,参数3=前缀(默认VITE_)constenv=loadEnv(mode,process.cwd(),'VITE_');return{plugins:[vue()],server:{proxy:{'/api':{target:env.VITE_BASE_URL,// 使用加载的环境变量changeOrigin:true,rewrite:(path)=>path.replace(/^\/api/,'')}}}}});
4. 自定义环境(如测试环境)

步骤1:创建.env.test文件

VITE_BASE_URL = https://test-api.xxx.com VITE_APP_ENV = test

步骤2:修改package.json脚本

{"scripts":{"dev":"vite",// 默认开发环境"dev:test":"vite --mode test",// 测试环境开发"build":"vite build",// 默认生产环境打包"build:test":"vite build --mode test"// 测试环境打包}}

步骤3:启动/打包

npmrun dev:test# 启动测试环境npmrun build:test# 打包测试环境
5. 自定义环境变量前缀(可选)

若不想用VITE_前缀,可在vite.config.js中配置envPrefix

exportdefaultdefineConfig({envPrefix:'MY_APP_',// 自定义前缀为 MY_APP_})

此时环境变量需命名为MY_APP_BASE_URL,读取时用import.meta.env.MY_APP_BASE_URL

三、通用注意事项(Vue2/Vue3 均适用)

  1. 变量类型:所有环境变量的值最终都是字符串,布尔值/数字需手动转换(如JSON.parse(import.meta.env.VITE_DEBUG));
  2. 优先级:本地私有文件(.env.xxx.local)> 特定环境文件(.env.development)> 通用文件(.env);
  3. 敏感信息:前端环境变量会被打包到代码中,不要存放密钥、token 等敏感信息(敏感信息需通过后端接口转发);
  4. 重启服务:修改环境文件后,需重启脚手架服务(npm run serve/dev)才能生效;
  5. git 忽略.local后缀的文件会被默认加入.gitignore,适合存放本地调试的配置(如.env.development.local)。

总结

场景前缀读取方式核心配置文件
Vue2 + Vue CLIVUE_APP_process.env.xxx.env/.env.development
Vue3 + Vue CLIVUE_APP_process.env.xxx同上
Vue3 + ViteVITE_(默认)import.meta.env.xxx同上
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 5:38:41

WinMerge:开源免费的文本与文件对比合并神器

文章目录引言&#xff1a;为什么你需要文件对比工具&#xff1f;一、WinMerge简介二、功能介绍三、下载地址四、高效使用技巧五、WinMerge vs 其他工具六、总结引言&#xff1a;为什么你需要文件对比工具&#xff1f; 在日常编程、文档编写或数据管理工作中&#xff0c;你是否…

作者头像 李华
网站建设 2026/4/16 7:12:51

ComfyUI_ACE-Step:高效音乐生成新工具

ComfyUI_ACE-Step&#xff1a;当AI成为你的作曲搭档 你有没有过这样的时刻&#xff1f;脑海里浮现出一段旋律的轮廓——可能是黄昏下缓缓流淌的钢琴音符&#xff0c;或是深夜街头回响的布鲁斯吉他riff——但当你试图把它写下来时&#xff0c;乐理知识的门槛、编曲经验的缺失&a…

作者头像 李华
网站建设 2026/4/16 7:25:19

Linly-Talker:开源数字人能否挑战Synthesia?

Linly-Talker&#xff1a;当开源数字人走向台前 在一场线上产品发布会上&#xff0c;主讲人面带微笑、语气自然地介绍着新功能——观众不会想到&#xff0c;这位“讲师”其实从未真正开口说过一句话。她只是一张照片&#xff0c;在AI的驱动下&#xff0c;随着文本逐字生成语音与…

作者头像 李华
网站建设 2026/4/16 7:25:45

喷涂机器人推荐,从基础选型到优质产品,一篇读懂制造业喷涂自动化

在制造业智能化转型的浪潮中&#xff0c;喷涂工艺作为保障产品外观质量与使用寿命的关键环节&#xff0c;正逐步摆脱对人工的依赖。人工喷涂不仅面临效率低下、涂层一致性差、涂料浪费严重等问题&#xff0c;更让工人长期暴露在含挥发性有机物&#xff08;VOCs&#xff09;的危…

作者头像 李华