UNPKG

nuke-debug-util

Version:

qap调试库函数

106 lines (104 loc) 3.19 kB
'use strict'; 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', }; };