diff --git a/lib/wasm/WebAssemblyModulesPlugin.js b/lib/wasm/WebAssemblyModulesPlugin.js index ca9bf26bce6..a4dd8a5b973 100644 --- a/lib/wasm/WebAssemblyModulesPlugin.js +++ b/lib/wasm/WebAssemblyModulesPlugin.js @@ -5,15 +5,16 @@ "use strict"; const Generator = require("../Generator"); -const WebAssemblyParser = require("./WebAssemblyParser"); -const WebAssemblyGenerator = require("./WebAssemblyGenerator"); -const WebAssemblyJavascriptGenerator = require("./WebAssemblyJavascriptGenerator"); -const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency"); const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency"); +const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency"); const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError"); /** @typedef {import("../Compiler")} Compiler */ +let WebAssemblyGenerator; +let WebAssemblyJavascriptGenerator; +let WebAssemblyParser; + class WebAssemblyModulesPlugin { constructor(options) { this.options = options; @@ -40,12 +41,21 @@ class WebAssemblyModulesPlugin { normalModuleFactory.hooks.createParser .for("webassembly/experimental") .tap("WebAssemblyModulesPlugin", () => { + if (WebAssemblyParser === undefined) { + WebAssemblyParser = require("./WebAssemblyParser"); + } return new WebAssemblyParser(); }); normalModuleFactory.hooks.createGenerator .for("webassembly/experimental") .tap("WebAssemblyModulesPlugin", () => { + if (WebAssemblyGenerator === undefined) { + WebAssemblyGenerator = require("./WebAssemblyGenerator"); + } + if (WebAssemblyJavascriptGenerator === undefined) { + WebAssemblyJavascriptGenerator = require("./WebAssemblyJavascriptGenerator"); + } return Generator.byType({ javascript: new WebAssemblyJavascriptGenerator(), webassembly: new WebAssemblyGenerator(this.options)