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 build
和vue-cli-service test:e2e
环境文件
文件名 | 作用 |
---|---|
.env | 在所有的环境中被载入 |
.env.local | 在所有的环境中被载入,但会被git忽略 |
.env.[mode] | 只在指定的模式中被载入 |
.env.[mode].local | 只在指定的模式中被载入,但会被git忽略 |
.env
全局默认配置文件,不论什么环境都会加载合并.env.development
开发环境下的配置文件.env.production
生产环境下的配置文件
环境文件加载优先级
为一个特定模式准备的环境文件 (例如 .env.production
) 将会比一般的环境文件 (例如 .env
) 拥有更高的优先级。
环境文件发生变化,你需要重启服务。
原因: .env 环境文件
是通过运行 vue-cli-service 命令
载入的
环境变量
- 项目根目录中>>>放置下列文件>>>指定环境变量
- 一个环境文件只包含环境变量的’‘键=值’'对
- 被载入的变量将会对
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文件
启动项目:
打印p
可见NODE_ENV被改为了development,覆盖掉了.env中的全局属性
.env中的全局属性NODE_ENV、VUE_APP_URL被覆盖,
.env中的全局属性VUE_APP_PREVIEW、VUE_APP_DEFAULT_PARAM被保留