vue下脚手架区分测试环境和正式环境
在网上找来找去,找到很多资料。自己实践后再统计一下。运用环境:公司增加测试环境,用脚手架搭出来的环境只有开发和线上,也就是只有dev和prod。现在增加一个test环境。很多其他的资料是用了一个插件。我这个方法不用插件。好了,话不多说。开始搞。1.在build文件夹中创建build-test.js文件build-test.js中的代码很简单,就两行。主要就是配置一个环境变量用以区别测试...
在网上找来找去,找到很多资料。自己实践后再统计一下。
运用环境:公司增加测试环境,用脚手架搭出来的环境只有开发和线上,也就是只有dev和prod。现在增加一个test环境。很多其他的资料是用了一个插件。我这个方法不用插件。好了,话不多说。开始搞。
1.在build文件夹中创建build-test.js文件
build-test.js中的代码很简单,就两行。主要就是配置一个环境变量用以区别测试和正式环境。这里没有直接修改原有的process.env.NODE_ENV是担心会影响到原本的逻辑。
注意:type的值必须单双引号两层嵌套,不能直接为’test’,否则会报错
// 配置环境变量 type 为 test
process.env.type = '"test"'
// 引入build.js文件,执行原先的编译代码
require('./build')
2.在package.json文件中添加npm run test命令
添加一条命令,执行我们上文创建的build-test.js文件
"test": "node build/build-test.js"
3.在request.js中判断 (可以不写这个创造实例。这个我只是为了记录设置baseURL,不影响分离环境。)
// 创建axios实例
const service = axios.create({
baseURL: process.env.BASE_API, // api的base_url
timeout: 10000 // 请求超时时间
})
4.在prod.env.js中改为
npm 提供一个npm_lifecycle_event变量,返回当前正在运行的脚本名称,比如pretest、test、posttest等等。所以,可以利用这个变量,在同一个脚本文件里面,为不同的npm scripts命令编写代码
'use strict'
const target = process.env.npm_lifecycle_event;
if (target == 'test') {
//测试
var obj = {
NODE_ENV: '"production"',
//post用当前域名
BASE_API: '"http://192.168.8.20:8100"',
}
}else {
//线上
var obj = {
NODE_ENV: '"production"',
//post用当前域名。顺便给我们公司优医家打个广告,我们公司是一家关注用户健康的企业。有APP,可以看看哦~
BASE_API: '"http://app_admin.uhealth-online.com.cn"',
}
}
module.exports = obj;
这里再说一个需求,有一些第三方服务,给的appkey,分为开发环境和正式环境,那么可以把这个appkey也写在这里,然后去需要的页面调用。类似这种。
在需要的文件里面,在生命周期中取出来,像这样。
this.appKey = process.env.appKey
这样就能每次打包不需要手动切换不同appkey了!
最后附上一个需要插件来区分环境的文章,丢个链接,有需要的可以看看。
更多推荐
所有评论(0)