UNPKG

isv-page-json-to-xtpl

Version:

abs 将页面 json 转换成 html

87 lines (79 loc) 2.87 kB
'use strict'; /** * 通过页面的模块数据,来获取页面模块的assets依赖表 * @param modules * @returns */ let CDN_BASE = '//g.alicdn.com'; let _ = require('lodash'); let Promise = require('bluebird'); let http = require('http'); const Client = require('isv-module-info'); const upx = Client.upxClient('production'); const requestJSON = require('request-json'); module.exports = function* deepMap(modules, upxClient){ let packageConfig = { packages: { "kg": { base: CDN_BASE + '/kg', group:"com" }, mtb: { base: CDN_BASE + '/mtb', group:"com" }, 'abs-mod-daily': { base: CDN_BASE + '/abs-mod-daily', group:"mod" }, 'abs-mod': { base: CDN_BASE + '/abs-mod', group:"mod" } }, modules: {}, loadErrorModules: [] }; yield Promise.map(modules, function (module){ let _upx = upxClient || upx; return new Promise((resolve, reject) => { let group = module.group && (module.group + '/') || ''; if (module.depMap) { let version = module.version && (module.version + '/') || ''; let entryDep = module.depMap[group + module.name + '/' + version + 'index']; if(!entryDep){ module.depMap[group + module.name + '/' + version + 'index'] = module.depMap[module.name + '/index']; } _.assignIn(packageConfig.modules, module.depMap); } else { // 存在这种情况,UPX OSS deps 空的,但是CDN 对的,比如 http://g.alicdn.com/abs-mod-daily/huangchao-demo15/0.0.1/deps.json //return _upx.request('componentService.getVersionFile',[module.componentVersionId,'deps.json']).then(function(result){ let jsonClient = requestJSON.createClient('http://g.alicdn.com/'); let url = module.group + '/' + module.name + '/' + module.version + '/deps.json'; return jsonClient.get(url).then((response)=>{ var result = response.body; if(result){ try { //let deps = JSON.parse(result); let deps = result; deps[group + module.name + '/' + module.version + '/index'] = deps[module.name + '/index'] || deps[group + module.name + '/index']; //将模块依赖注入全局依赖表,顺便可以去重 _.assignIn(packageConfig.modules, deps); } catch (e) { packageConfig.loadErrorModules.push(module); } }else{ packageConfig.loadErrorModules.push(module); } resolve(true); }); } if (module.base) { let version = module.version && ('/' + module.version) || ''; packageConfig.packages[group + module.name + version] = {base: module.base,group:"dev"}; } resolve(true); }); }); return packageConfig; };