Vite Vue项目环境变量疑问:构建时为何优先读取.env.local而非.env.production?
Vite环境变量加载优先级与构建配置问题解答
关于.env.local的优先级问题
是的,Vite的环境文件加载优先级规则中,.env.local的优先级高于所有模式特定的环境文件(包括.env.production)。不管执行vite build时默认的production模式,还是显式指定模式,只要.env.local存在,它里面的变量就会覆盖同模式下其他环境文件的内容。
确保vite build默认加载.env.production的方法
有两种可靠的解决方式:
- 方式一:拆分local环境文件
不要使用通用的.env.local,而是根据模式拆分:- 开发环境用
.env.development.local(仅在npm run dev时加载) - 生产构建时如果需要本地覆盖,用
.env.production.local;不需要的话直接删除该文件
这样执行vite build时,只会加载.env.production(以及可选的.env.production.local),不会被通用的.env.local干扰。
- 开发环境用
- 方式二:临时移除通用
.env.local
如果只是临时需要构建时不加载.env.local,可以直接将其重命名(比如改成.env.local.backup)或删除,构建完成后再恢复即可。
另外补充:vite build默认就是production模式,不需要额外加--mode production参数,但如果想明确指定模式,也可以在package.json的脚本里修改为:
"scripts": { "build": "vite build --mode production" }
不过这不会改变.env.local的优先级,核心还是处理.env.local的存在问题。
内容的提问来源于stack exchange,提问作者IvanS95
相关产品推荐
相关产品推荐

