当前位置: 首页 > article >正文

Vue中 env 文件是如何读取的? 优先级?

Vue中 env 文件是如何读取的? 优先级?

start

  • 今天来研究一下 Vue 中 env 是如何读取的。跟着我的脚步来学习一下吧。
  • 作者:番茄;
  • 编写时间:2023/11/30

前情提要

env,使用方式是process.env。简单来说,他就是nodejs上下文中的一个对象。主要用它来存储针对不同环境的一些环境变量,然后方便我们一套代码,兼容多种环境。

说白了,env 就是一个存储配置信息的对象;

本文的主要目的:掌握 在 vue 项目中如何设置并使用这个 env 环境变量。

有关 env 变量更加全面的介绍。可以参考:vue项目中的 env文件从何而来?什么是 process.env

官方文档

vue-cli-官方文档

在这里插入图片描述

env 具体使用

1. 默认的模式

依据上方的官方文档截图可以了解到,默认有三种模式

  • development 模式用于 vue-cli-service serve
  • test 模式用于 vue-cli-service test:unit
  • production 模式用于 vue-cli-service buildvue-cli-service test:e2e

我在 main.js 中打印 process.env,然后运行 npm run serve,实际运行的命令为 vue-cli-service serve,此时它的模式为 development

效果图

在这里插入图片描述

总结

由上面的截图可以知,当我们运行开发环境的命令是。默认的环境变量为: {"NODE_ENV":"development","BASE_URL":"/"}

2. 增加配置文件 env

上一节我们打印了基础的环境变量,这一节我们尝试增加我们的环境变量。

在项目的根目录新增一个 .env 的配置文件,编写如下内容:

name=lazyTomato
key=env
version=0.0.1

然后重新运行npm run serve

效果图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看到上述截图,发现我们的环境变量配置信息居然没有发生任何改变。然后我们查看官方文档,对此做了说明

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请注意,只有 NODE_ENVBASE_URL 和以 `` 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。这是为了避免意外公开机器上可能具有相同名称的私钥。

我们修改一下 .env 文件,重新运行。注意:修改了env文件后,需要重启服务,因为每次启动服务会读取当前环境信息,不会热更新

VUE_APP_name=lazyTomato
VUE_APP_key=env
VUE_APP_version=0.0.1

# 注释: 一般情况下,为了统一规范,建议 key的命名:全大写,下换线连接。

效果图

在这里插入图片描述

总结

本节内容,主要是尝试了通过配置文件的方式增加我们全局环境变量的配置,然后需要了变量不生效的情况。所以在定义变量的时候,需要注意:

请注意,只有 NODE_ENVBASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。这是为了避免意外公开机器上可能具有相同名称的私钥。

3. 环境文件的读取的优先级。

官方文档的说明:

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略

为了实验 .env 文件读取的优先级,我分别定义 .env.env.development.env.development.local 文件分别定义相同和不相同的配置信息。看一下系统如何打印。

效果图

在这里插入图片描述

总结

  1. 环境配置文件优先级: .env.development.local > .env.development > .env

  2. 三个文件都会被读取。

  3. .local 文件会被git忽略。

4. 手动指定mode

"serve": "vue-cli-service serve --mode=tomato"

效果图

在这里插入图片描述

总结

手动指定mode即可。

end

在 Vue中使用 env,底层原理还是 vue-cli-service 内部集成了对 .env 配置文件的处理,并加载到 process.env 上。

  1. 加载文件优先级: .env.development.local > .env.development > .env
  2. 可手动指定mode。
  3. 只有 NODE_ENVBASE_URL 和以 VUE_APP_ 开头的变量才会被读取。

http://www.kler.cn/a/158660.html

相关文章:

  • 一文了解Android的核心系统服务
  • 【gitlab】gitlabrunner部署
  • ChromeDriver驱动下载地址更新(保持最新最全)
  • Cherno OpenGL(28 ~ 33)
  • HBase 开发:使用Java操作HBase
  • 【爬虫实战】抓取某站评论
  • springboot(ssm健身器材用品网 健身用品商城Java(codeLW)
  • 卷积神经网络训练情感分析
  • 基于ssm品牌会员在线商城源码
  • RepidJson将内容写入文件
  • 运维的职业成长路径是怎么样的?
  • DeepStream系列之rtmpsink功能,rtsp转rtmp,opencv读取rtsp图像处理后推流rtmp
  • Example: use raspberry pi 4 control multiple motors(tb660)
  • Doris 外部表
  • FIR IP 学习记录
  • 酷雷曼连续两届荣任北京软协理事会会员单位
  • 【Maven】清理 maven 仓库
  • C++ day55 判断子序列 不同的子序列
  • ssm的网上奶茶店系统(有报告)。Javaee项目。
  • UDP数据报套接字
  • 5G常用简称
  • MySQL索引优化及查询优化
  • rabbitmq消息队列实验
  • 基于SQL语言的数据库管理系统
  • 高防服务器和高防CDN的区别是什么?
  • VUE学习笔记(表单数据收集)