@hap-toolkit/packager
Version:
@hap-toolkit/packager
3 lines (2 loc) • 2.49 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.HandlerPlugin=HandlerPlugin;var _Compilation=_interopRequireDefault(require("webpack/lib/Compilation")),_sharedUtils=require("@hap-toolkit/shared-utils"),_info=require("../common/info");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let ConcatSource;function HandlerPlugin(e){this.options=e}function wrapCode(e,n,o,t){if(/\.js$/.test(e))return-1!==t.indexOf(e)?e.match(/\bapp\.js$/)?new ConcatSource(`(function(){\n ${o?'global = typeof window === "undefined" ? global.__proto__ : window ;':""}\n var $app_define_wrap$ = $app_define_wrap$ || function() {}\n var manifestJson = ${JSON.stringify(global.framework.manifest)}\n var createAppHandler = function() {\n return `,n.assets[e],'\n };\n if (typeof window === "undefined") {\n return createAppHandler();\n }\n else {\n window.createAppHandler = createAppHandler\n // H5注入manifest以获取features\n global.manifest = manifestJson;\n }\n })();'):new ConcatSource(`(function(){\n ${o?'global = typeof window === "undefined" ? global.__proto__ : window ;':""}\n var createPageHandler = function() {\n return `,n.assets[e],'\n };\n if (typeof window === "undefined") {\n return createPageHandler();\n }\n else {\n window.createPageHandler = createPageHandler\n }\n })();'):_sharedUtils.globalConfig.isSmartMode?new ConcatSource(n.assets[e]):void n.errors.push(new Error("### App Loader ### 使用了动态导入js, 请添加 `--split-chunks-mode=smart` 命令进行编译"))}HandlerPlugin.prototype.apply=function(e){ConcatSource=e.webpack.sources.ConcatSource;const n=this.options.workers,o=this.options.enableE2e;e.hooks.compilation.tap("HandlerPlugin",(function(t){t.hooks.processAssets.tap({name:"HandlerPlugin",stage:_Compilation.default.PROCESS_ASSETS_STAGE_OPTIMIZE},(()=>{const i=(0,_info.getEntryFiles)(e.options.entry),r=(0,_info.getLiteEntryFiles)(e.options.entry),{originType:a}=_sharedUtils.compileOptionsObject||{},s="development"===_sharedUtils.globalConfig.mode;t.chunks.forEach((function(l){l.files.forEach((function(l){if((a!==_sharedUtils.compileOptionsMeta.originTypeNum.IDE||!s)&&r.indexOf(l)>=0)return void delete t.assets[l];if(l.startsWith(n))return;if(e.modifiedFiles&&!_sharedUtils.globalConfig.changedJS[l])return;const d=wrapCode(l,t,o,i);d&&(t.assets[l]=d)}))}))}))}))};
//# sourceMappingURL=handler-plugin.js.map