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_ 开头的变量才会被读取。

相关推荐

  1. c++分辨文件编码格式utf-8还GB2312

    2023-12-06 02:54:06       30 阅读
  2. Vue.env文件:配置、用法和注意事项

    2023-12-06 02:54:06       40 阅读
  3. python入门,文件编码,,写入,追加

    2023-12-06 02:54:06       60 阅读
  4. C# CSV 文件三种方式分析

    2023-12-06 02:54:06       40 阅读
  5. vue-cli使用环境配置文件env

    2023-12-06 02:54:06       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 02:54:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 02:54:06       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 02:54:06       82 阅读
  4. Python语言-面向对象

    2023-12-06 02:54:06       91 阅读

热门阅读

  1. Clickhouse遇到密码错误如何修改密码

    2023-12-06 02:54:06       54 阅读
  2. 深入理解Linux用户权限管理:常用命令详解

    2023-12-06 02:54:06       53 阅读
  3. ES6中 对象合并

    2023-12-06 02:54:06       53 阅读
  4. 记录 | CUDA编程中声明内联函数的方法

    2023-12-06 02:54:06       54 阅读
  5. 糊里糊涂在计算机行业混迹10年

    2023-12-06 02:54:06       48 阅读
  6. python昨天日期时间,另外两种方法

    2023-12-06 02:54:06       55 阅读
  7. job_queue_processes参数讲解

    2023-12-06 02:54:06       66 阅读
  8. k8s的部署管理以及prometheus相关监控

    2023-12-06 02:54:06       66 阅读
  9. crui_lvgl 一个LVGL的DSL辅助工具的设想

    2023-12-06 02:54:06       54 阅读