Skip to content
本页目录

env.development 和 .env.production环境文件 process.env属性

模式

模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式: 开发,测试,生产

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

vue官方文档

环境文件

文件名作用
.env在所有的环境中被载入
.env.local在所有的环境中被载入,但会被git忽略
.env.[mode]只在指定的模式中被载入
.env.[mode].local只在指定的模式中被载入,但会被git忽略
  • .env 全局默认配置文件,不论什么环境都会加载合并
  • .env.development 开发环境下的配置文件
  • .env.production生产环境下的配置文件

环境文件加载优先级

为一个特定模式准备的环境文件 (例如 .env.production) 将会比一般的环境文件 (例如 .env) 拥有更高的优先级。

环境文件发生变化,你需要重启服务。

原因: .env 环境文件是通过运行 vue-cli-service 命令载入的

环境变量

  1. 项目根目录中>>>放置下列文件>>>指定环境变量
  2. 一个环境文件只包含环境变量的’‘键=值’'对
  3. 被载入的变量将会对vue-cli-service的所有命令、插件和依赖可用。

示例 : 在vue-element-admin后台前端解决方案的.env.development文件中的代码

# just a flag
ENV = 'development'

# base api
VUE_APP_BASE_API = '/dev-api'

注意:属性名必须以VUE_APP_开头,比如VUE_APP_XXX (vue_cli 框架会自动过滤掉非VUE_APP开头的变量名)

关于文件的加载:

根据启动命令vue会自动加载对应的环境,vue是根据文件名进行加载的,不要乱起名,也无需专门控制加载哪个文件

比如执行npm run serve命令,会自动加载.env.development文件

关于process.env属性

全局属性,任何地方均可使用
process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。作为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()。

关于文件名:必须以如下方式命名,不要乱起名,也无需专门手动控制加载哪个文件

.env //全局默认配置文件,不论什么环境都会加载合并

.env.development //开发环境下的配置文件

.env.production //生产环境下的配置文件

关于文件内容:

注意:属性名必须以VUE_APP_开头,比如VUE_APP_XXX

.env:

.env.development:

关于文件的加载:

根据启动命令vue会自动加载对应的环境,vue是根据文件名进行加载的,
所以上面说“不要乱起名,也无需专门控制加载哪个文件”

比如执行npm run serve命令,会自动加载.env.development文件

启动项目:

打印process.env属性(全局属性,任何地方均可使用):

可见NODE_ENV被改为了development,覆盖掉了.env中的全局属性

.env中的全局属性NODE_ENV、VUE_APP_URL被覆盖,

.env中的全局属性VUE_APP_PREVIEW、VUE_APP_DEFAULT_PARAM被保留