总所周知项目完成以后代码都会统一打包上线,有些时候我们需要同时上线不同环境,对于不同的环境我们所展示页面、功能有时会有很大变化,那么我们如何应对这样的变化呢?
问题:
-
我发现有些琐碎的事情有些琐碎并且很难做,而在Web应用程序内部却是如此。这些事情之一是处理不同的环境变量。
-
当您仍在开发应用程序时,通常只有一个环境是正常的,但是当其他一些用户开始对其进行测试或要发布它时,您可能希望对API使用不同的URL,例如该API的开发版本。可以访问新端点或更全面的记录器以及生产就绪版本的API,这些API经过了良好的测试,并具有发行版本的生产数据库。
-
有时您需要两个以上的环境,例如:
- 开发:这是您开发应用程序所有新功能的地方;该环境已准备就绪,可以帮助您获得更好的日志和伪造的数据库,如果您花费很多,可以随时删除并重新创建它们;
- 生产版:这是您将发布到线上的版本
具体操作如下:
package.json
里的 scripts
配置 serve stage build
,通过 --mode xxx
来执行不同环境
- 通过
npm run serve
启动本地 , 执行development
- 通过
npm run stage
打包测试 , 执行staging
- 通过
npm run build
打包正式 , 执行production
"scripts": {
"serve": "vue-cli-service serve --open",
"stage": "vue-cli-service build --mode staging",
"build": "vue-cli-service build",
}
配置介绍
以 VUE_APP_
开头的变量,在代码中可以通过 process.env.VUE_APP_
访问。
比如,VUE_APP_ENV = 'development'
通过process.env.VUE_APP_ENV
访问。
除了 VUE_APP_*
变量之外,在你的应用代码中始终可用的还有两个特殊的变量NODE_ENV 和BASE_URL
在项目根目录中新建.env.*
.env.development
本地开发环境配置
NODE_ENV='development'
# must start with VUE_APP_
VUE_APP_ENV = 'development'
.env.staging
测试环境配置
NODE_ENV='production'
# must start with VUE_APP_
VUE_APP_ENV = 'staging'
.env.production
正式环境配置
NODE_ENV='production'
# must start with VUE_APP_
VUE_APP_ENV = 'production'
-
这里我们并没有定义很多变量,只定义了基础的
VUE_APP_ENV
development
staging
production
-
变量我们统一在
src/config/env.*.js
里进行管理。 -
这里有个问题,既然这里有了根据不同环境设置变量的文件,为什么还要去 config 下新建三个对应的文件呢?
-
修改起来方便,不需要重启项目,符合开发习惯。
-
config / index.js
// 根据环境引入不同配置 process.env.NODE_ENV
const config = require('./env.' + process.env.VUE_APP_ENV)
module.exports = config
- 配置对应环境的变量,拿本地环境文件 env.development.js 举例,用户可以根据需求修改
// 本地环境配置
module.exports = {
title: 'vue-admin-template',
baseUrl: 'http://localhost:1001', // 项目地址
baseApi: 'https://test.xxx.com/api', // 本地api请求地址
APPID: 'xxx',
APPSECRET: 'xxx'
}
- 根据环境不同,变量就会不同了
// 根据环境不同引入不同baseApi地址
import { baseApi } from '@/config'
console.log(baseApi)