uni-app期望HbuilderX的原生打包能够支持Env mode或者类似的功能
uni-app期望HbuilderX的原生打包能够支持Env mode或者类似的功能
环境 | 版本号 | 项目创建方式 |
---|---|---|
dev | ||
test | ||
prod |
现在对于不同环境(dev、test、prod)的发版,无论是wgt或者原生包,都需要检查对应git分支上的baseAPI设置是否正确,心智负担较大,而且即使做了比较完成的checkList,安全及稳定性也远不如程序控制来得准确,所以期望能支持env mode功能呢,通过对打包传递不同的mode,进行环境变量的区分
1 回复
在uni-app中,虽然HBuilderX的原生打包默认并不直接支持像Webpack中的.env
文件这样的环境变量模式,但我们可以通过一些替代方案来实现类似的功能。以下是一个利用manifest.json
和condition
编译指令的示例,来模拟环境变量的效果。
步骤一:配置manifest.json
首先,在manifest.json
文件中,我们可以定义多个自定义条件编译标识。这些标识将用于区分不同的环境。
{
"mp-weixin": { // 微信小程序配置示例
"appid": "your-appid",
"setting": {
"urlCheck": false
},
"condition": { // 条件编译配置
"scripts": []
},
"usingComponents": true
},
"custom_conditions": { // 自定义条件编译标识
"development": true, // 开发环境
"production": false // 生产环境
}
}
步骤二:使用条件编译指令
接着,在代码中利用#ifdef
和#endif
条件编译指令,根据manifest.json
中的配置来包含或排除特定的代码块。
// 在页面的script部分
#ifdef development
console.log('当前是开发环境');
// 开发环境下的特定代码
#else
console.log('当前是生产环境');
// 生产环境下的特定代码
#endif
步骤三:切换环境配置
在打包前,手动或通过脚本修改manifest.json
中的custom_conditions
部分,以切换环境配置。例如,将开发环境切换到生产环境:
"custom_conditions": {
"development": false,
"production": true
}
自动化脚本(可选)
为了简化环境切换的流程,可以编写一个简单的Node.js脚本来自动化这一过程。
const fs = require('fs');
const path = require('path');
const manifestPath = path.join(__dirname, 'manifest.json');
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
// 切换为生产环境
manifest.custom_conditions.development = false;
manifest.custom_conditions.production = true;
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), 'utf8');
console.log('环境已切换为生产环境');
通过上述方法,我们可以在uni-app项目中模拟出类似.env
文件的环境变量功能,虽然操作稍显繁琐,但能有效区分开发环境和生产环境,确保代码的正确执行。