nuke-debug-util
Version:
qap调试库函数
106 lines (104 loc) • 3.19 kB
JavaScript
;
const fetch = require('node-fetch');
const path = require('path');
const fs = require('fs-extra');
const semver = require('semver');
const moment = require('moment');
const chalk = require('chalk');
const cwd = process.cwd();
/**
* 返回特定tag的sdk info
* @param {string}可选的tag类型 release、beta、release-x
*/
module.exports.getSDKInfo = function(tag) {
if (!tag || tag.length == 0) {
tag = 'release';
}
let timeNow = moment().format('YYYY-MM-DD hh:mm:ss');
// 增加缓存文件,减少接口耗时
let cache_path = path.resolve(cwd, '.jssdk.json');
if (fs.existsSync(cache_path)) {
let cache = fs.readJsonSync(cache_path);
if (
cache.timeUpdate &&
moment(cache.timeUpdate).add(1, 'h') > moment(timeNow)
) {
return {
success: true,
data: cache.data ? cache.data : cache,
};
}
}
return new Promise((resolve, reject) => {
let sdkPackJson = `https://unpkg.cnpmjs.org/qap-sdk-pack@${tag}/package.json`;
fetch(sdkPackJson)
.then(res => {
return res.json();
})
.then(
json => {
let cache_sdk = {
timeUpdate: timeNow,
data: json,
};
fs.writeJsonSync(cache_path, cache_sdk);
resolve({
success: true,
data: json,
});
},
err => {
console.log(
chalk.red(
`当前网络无法访问${sdkPackJson}, 开始使用备份文件作为构建基础信息`
)
);
try {
let backUpJson = require(path.join(cwd, '.jssdk.json'));
backUpJson.timeUpdate = timeNow;
fs.writeJsonSync(cache_path, backUpJson);
} catch (err) {
console.log(error);
}
resolve({
success: true,
info: `qap-sdk-pack ${tag} version is not exist , use backup file instead`,
});
}
)
.catch(error => {
console.log(
chalk.red(
`当前网络无法访问${sdkPackJson}, 开始使用备份文件作为构建基础信息`
)
);
try {
let backUpJson = require(path.join(cwd, '.jssdk.json'));
backUpJson.timeUpdate = timeNow;
fs.writeJsonSync(cache_path, backUpJson);
} catch (err) {
console.log(error);
}
resolve({
success: true,
info: `use backup file instead`,
});
});
});
};
/**
* 取项目的min-qn版本,只在初始化执行
* 1、overwriteVersion是否等于 version,如果不等于,那么继续取overwriteVersion的package.json,直到相等。
* 2、overwriteVersion等于 version 的json文件里,minQN的版本号即为线上插件能运行的千牛最小版本号。
* @return \{{{object}}\} {{min_qn_android,min_qn_ios}}{{}}
*/
module.exports.getMinVersion = function(res) {
return {
min_qn_android: res.data.compatibility.app
? res.data.compatibility.app.android
: '5.8.2',
min_qn_ios: res.data.compatibility.app
? res.data.compatibility.app.ios
: '5.8.2',
};
};