diff --git a/lib/library/AmdLibraryPlugin.js b/lib/library/AmdLibraryPlugin.js index 3e50849af14..7cc6c33b0de 100644 --- a/lib/library/AmdLibraryPlugin.js +++ b/lib/library/AmdLibraryPlugin.js @@ -52,7 +52,7 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin { * @returns {T | false} preprocess as needed by overriding */ parseOptions(library) { - const { name } = library; + const { name, globalObject } = library; if (this.requireAsWrapper) { if (name) { throw new Error( @@ -66,8 +66,13 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin { ); } } + let globalObjectPrefix = ''; + if (globalObject) { + globalObjectPrefix = `${globalObject}.`; + } return { - name: /** @type {string=} */ (name) + name: /** @type {string=} */ (name), + globalObjectPrefix: /** @type {string=} */ (globalObjectPrefix) }; } @@ -113,7 +118,7 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin { if (this.requireAsWrapper) { return new ConcatSource( - `require(${externalsDepsArray}, ${fnStart}`, + `${options.globalObjectPrefix}require(${externalsDepsArray}, ${fnStart}`, source, `${fnEnd});` ); @@ -123,18 +128,18 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin { }); return new ConcatSource( - `define(${JSON.stringify(name)}, ${externalsDepsArray}, ${fnStart}`, + `${options.globalObjectPrefix}define(${JSON.stringify(name)}, ${externalsDepsArray}, ${fnStart}`, source, `${fnEnd});` ); } else if (externalsArguments) { return new ConcatSource( - `define(${externalsDepsArray}, ${fnStart}`, + `${options.globalObjectPrefix}define(${externalsDepsArray}, ${fnStart}`, source, `${fnEnd});` ); } else { - return new ConcatSource(`define(${fnStart}`, source, `${fnEnd});`); + return new ConcatSource(`${options.globalObjectPrefix}define(${fnStart}`, source, `${fnEnd});`); } } @@ -155,6 +160,9 @@ class AmdLibraryPlugin extends AbstractLibraryPlugin { chunk }); hash.update(name); + } else if (options.globalObject) { + hash.update("globalObjected"); + hash.update(options.globalObject); } } }