引言

你可能听完我的题目有点发懵,那我来给你解释一下:

  • NODE_ENV就是我们在i项目中常用的process.env.NODE_ENV
  • .env.xxx文件就是下面的几个文件
    在这里插入图片描述
    serve、build等命令就是指的package.json中这几个命令:
    在这里插入图片描述

NODE_ENV是什么

NODE_ENV为一个默认的全局变量,与此同时还有一个BASE_URL
我们可以在vuecli的main.js中直接打印:

console.log(process.env)

效果如下:
在这里插入图片描述

NODE_ENV 将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种 webpack 配置。

.env.xxx文件的作用以及与serve、build等命令的关系

模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式

development 模式用于 vue-cli-service serve
test 模式用于 vue-cli-service test:unit
production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e

你可以通过传递 --mode 选项参数为命令行覆写默认的模式。例如,如果你想要在构建命令中使用开发环境变量:

vue-cli-service build --mode production

当运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 “production”,在 test 模式下被设置为 “test”,默认则是 “development”。

默认情况下

当我们在运行这些命令的时候
在这里插入图片描述
就比如serve命令的vue-cli-service serve其实就等于vue-cli-service serve–mode development,然后他就会去寻找.env.development文件,去加载里面的变量,并且将mode后面的值赋值给NODE_ENV,这一系列的过程都是自动的,并且是默认的,那么相信其他的几个命令大家也都懂了吧。
总结一下:他们的对应关系:
在这里插入图片描述

非默认情况下

如果我们不想运行npm run serve时给NODE_ENV赋值为development,我们想要给他赋值为dev1
也不想运行npm run build时给NODE_ENV赋值为production,我们想要给他赋值为pro,等等,反正完全就是自定的,那么要怎么办呢?

首先要明白一个关系
当我们运行一个命令之后他就会去寻找对应的文件名,就比如我

  • 运行了npm run serve --mode development,那么vuecli就会自动去寻找一个叫做.env.development的件,去加载里面的变量
  • 当我们运行npm run serve --mode dev1的时候,那么就会去寻找一个叫做.env.dev1的文件,去加载里面的变量,
  • 以此类推
    对应的效果是这样的:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他

最后当我使用npm run serve的时候的打印结果如下:
在这里插入图片描述

===============================================

注意:如果在下面几个文件中添加了一非VUE_APP_开头的变量,那么在vuecli中是无法读取的:

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

在这里插入图片描述
但是我们是可以在vue.config.js文件中读取到的
在这里插入图片描述

在这里插入图片描述

最后——如果你很认真的看完了,记得点赞关注加收藏哦!!!

最后,点我查看官方讲解

Logo

前往低代码交流专区

更多推荐