在网上找来找去,找到很多资料。自己实践后再统计一下。

运用环境:公司增加测试环境,用脚手架搭出来的环境只有开发和线上,也就是只有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了!

最后附上一个需要插件来区分环境的文章,丢个链接,有需要的可以看看。 

https://www.jb51.net/article/137610.htm

Logo

前往低代码交流专区

更多推荐