在微信小程序中,envVersion
可以取三个值之一:'develop'、'trial' 和 'release'。这些值代表了小程序当前的运行环境:
-
'develop'
: 表示开发版环境,即在开发者工具中预览或者通过wx.preview
方法预览的环境。 -
'trial'
: 表示体验版环境,即通过微信公众平台将小程序提交审核后发布为体验版,用户可以在微信中体验到的环境。 -
'release'
: 表示正式版环境,即通过微信公众平台审核通过后正式发布的环境,用户可以在微信中搜索到并使用的环境。
那么如何自动化判断环境,而非手动修改,有以下三种方式:
1、使用官方API getAccountInfoSync判断
const Hosts = {
mock: 'http://192.168.1.996:007',
dev: 'https://dev.com',
tri: "https://hidden.com",
prod: 'https://prod.com'
};
const { envVersion } = wx.getAccountInfoSync().miniProgram;
let baseUrl = "";
switch (envVersion) {
case 'develop':
baseUrl = `${Hosts.dev}`;
break;
case 'trial':
baseUrl = `${Hosts.tri}`;
break;
case 'release':
baseUrl = `${Hosts.prod}`;
break;
default:
baseUrl = `${Hosts.prod}`;
break;
}
console.log(baseUrl)
2、通过本地特殊文件来判断
let _ENV = 'prod';
const fileManager = wx.getFileSystemManager();
try {
fileManager.accessSync('/local.txt');
_ENV = 'dev';
} catch (e) { }
if (_ENV === 'prod') { //这里其实只判断是否是线上
baseUrl = Hosts.prod;
}
3、采用CI机器人自动化切换环境发布
//写好脚本,在每次上传前或者预览前修改 host文件
const fs = require('fs');
fs.readFile('./host.js','utf8',function(err,data){
// 字符串转数组
let txt = "let baseUrl = Hosts.prod";
fs.writeFile('./host.js',txt,function(err){
console.log(arr);
})
})
//上传脚本
const ci = require('miniprogram-ci')
;(async () => {
const project = new ci.Project({
appid: 'wxsomeappid',
type: 'miniProgram',
projectPath: 'the/project/path',
privateKeyPath: 'the/path/to/privatekey',
ignores: ['node_modules/**/*'],
})
const uploadResult = await ci.upload({
project,
version: '1.1.1',
desc: 'hello',
setting: {
es6: true,
},
onProgressUpdate: console.log,
})
console.log(uploadResult)
})()