在用HbuilderX 发行项目时, 常常需要根据不同的环境发布不同的版本,如测试服务器环境 ,生产服务器环境。 最主要的区别在于接口域名的区别,根据环境不同发行不同的域名接口。使用package.json扩展配置用法可完成此项需求。
package.json扩展配置用法(拷贝代码记得去掉注释!)
"uni-app": {
"scripts": {
"test-platform": { //扩展配置 这里可自己定义名称
"title": "测试服务器", //标题, 会出现在 运行--> 测试服务器, 和 发行--->自定义 中
"BROWSER":"Chrome",
"env": {
"UNI_PLATFORM": "h5"
},
"define": {
"TEST-SERVER": true //自定义条件编译常量,建议为大写
}
},
"product-platform": {
"title": "生产服务器",
"BROWSER":"Chrome",
"env": {
"UNI_PLATFORM": "h5"
},
"define": {
"PRODUCT-SERVER": true
}
}
}
}
package.json
文件中不允许出现注释,否则扩展配置无效
在这里我只是注明了重点部份,详情可查看官方文档
在代码中使用自定义平台
在 hbuilderx 中 process.env.NODE_ENV 有两种状态 是一个 development
, 另一个是 production
,当点击工具栏–>发行是属于 production
, 运行栏下的属于development
, 所以可以在不同的环境下 做接口的更换。
export var apiBaseUrl = "http://localhost:1818/";
if(process.env.NODE_ENV === 'development'){
apiBaseUrl = "http://localhost:1818/"
//开发时的
//#ifdef TEST-SERVER
apiBaseUrl = "http://111.111.111.111:1818/"
//#endif
}else{
//production
//生产环境下域名配置
//#ifdef PRODUCT-SERVER
apiBaseUrl = "http://xx.xx.xx.xxx:1818/"
//#endif
//测试环境下域名配置
//#ifdef TEST-SERVER
apiBaseUrl = "http://yy.yy.yy.yy:1818/"
//#endif
}
运行及发布
HBuilderX
会根据package.json
的扩展配置,在运行、发行菜单下,生成自定义菜单(测试服务器,生产服务器),开发者点击对应菜单编译运行即可, 如下图:
到此就可根据不同的环境发行不同的版本。