From acb207d03c59c3a203b34f46fbbf8e3ff8273329 Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Sat, 25 May 2019 15:52:14 -0700 Subject: [PATCH] feat(target): support electron preload async chunk loading --- declarations/WebpackOptions.d.ts | 3 ++- lib/WebpackOptionsApply.js | 12 ++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/declarations/WebpackOptions.d.ts b/declarations/WebpackOptions.d.ts index 7e45ddbd437..d2408e18456 100644 --- a/declarations/WebpackOptions.d.ts +++ b/declarations/WebpackOptions.d.ts @@ -390,7 +390,8 @@ export interface WebpackOptions { | "async-node" | "node-webkit" | "electron-main" - | "electron-renderer") + | "electron-renderer" + | "electron-preload") | ((compiler: import("../lib/Compiler")) => void); /** * Enter watch mode, which rebuilds on file change. diff --git a/lib/WebpackOptionsApply.js b/lib/WebpackOptionsApply.js index ff4601cee16..32a813e42b0 100644 --- a/lib/WebpackOptionsApply.js +++ b/lib/WebpackOptionsApply.js @@ -156,11 +156,19 @@ class WebpackOptionsApply extends OptionsApply { new LoaderTargetPlugin(options.target).apply(compiler); break; case "electron-renderer": - JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin"); + case "electron-preload": FetchCompileWasmTemplatePlugin = require("./web/FetchCompileWasmTemplatePlugin"); NodeTargetPlugin = require("./node/NodeTargetPlugin"); ExternalsPlugin = require("./ExternalsPlugin"); - new JsonpTemplatePlugin().apply(compiler); + if (options.target === "electron-renderer") { + JsonpTemplatePlugin = require("./web/JsonpTemplatePlugin"); + new JsonpTemplatePlugin().apply(compiler); + } else if (options.target === "electron-preload") { + NodeTemplatePlugin = require("./node/NodeTemplatePlugin"); + new NodeTemplatePlugin({ + asyncChunkLoading: true + }).apply(compiler); + } new FetchCompileWasmTemplatePlugin({ mangleImports: options.optimization.mangleWasmImports }).apply(compiler);