feat: assset.json package 对象支持 exportName, 用来适配 umd 导出的 name

This commit is contained in:
zude.hzd 2021-04-22 15:11:26 +08:00 committed by 力皓
parent 4fb91ce33b
commit 6a1af9d729

View File

@ -108,6 +108,7 @@ const defaultEnvironment = [
AssetType.JSText,
'window.PropTypes=parent.PropTypes;React.PropTypes=parent.PropTypes; window.__REACT_DEVTOOLS_GLOBAL_HOOK__ = window.parent.__REACT_DEVTOOLS_GLOBAL_HOOK__;',
),
];
const defaultRaxEnvironment = [
@ -265,21 +266,43 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
private _iframe?: HTMLIFrameElement;
/**
* {
* "title":"BizCharts",
* "package":"bizcharts",
* "exportName":"bizcharts",
* "version":"4.0.14",
* "urls":[
* "https://g.alicdn.com/code/lib/bizcharts/4.0.14/BizCharts.js"
* ],
* "library":"BizCharts"
* }
* packageString npm包名
* exportNameString umd包导出名字define name不一致的问题BizCharts改成bizchartsdefine声明的bizcharts
* versionString
* urlsArray cdn地址umd类型.js或者.css
* libraryString umd包直接导出的name
*/
buildLibrary(library) {
library = library || this.get('library') as LibraryItem[];
const libraryAsset: AssetList = [];
const libraryExportList = [];
if (library) {
library.forEach((item) => {
this.libraryMap[item.package] = item.library;
if (item.async) {
this.asyncLibraryMap[item.package] = item;
}
if (item.exportName && item.library) {
libraryExportList.push(`Object.defineProperty(window,'${item.exportName}',{get:()=>window.${item.library}});`);
}
if (item.urls) {
libraryAsset.push(item.urls);
}
});
}
libraryAsset.unshift(assetItem(AssetType.JSText, libraryExportList.join('')));
return libraryAsset;
}
@ -304,6 +327,7 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
),
// required & use once
assetBundle(this.get('extraEnvironment'), AssetLevel.Environment),
// required & use once
assetBundle(libraryAsset, AssetLevel.Library),
// required & TODO: think of update