/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const EnableLibraryPlugin = require("./library/EnableLibraryPlugin"); /** * @import { * AuxiliaryComment, * LibraryExport, * LibraryName, * LibraryType, * UmdNamedDefine * } from "../declarations/WebpackOptions" */ /** @import Compiler from "./Compiler" */ // TODO webpack 6 remove class LibraryTemplatePlugin { /** * Creates an instance of LibraryTemplatePlugin. * @param {LibraryName} name name of library * @param {LibraryType} target type of library * @param {UmdNamedDefine} umdNamedDefine setting this to true will name the UMD module * @param {AuxiliaryComment} auxiliaryComment comment in the UMD wrapper * @param {LibraryExport} exportProperty which export should be exposed as library */ constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) { this.library = { type: target || "var", name, umdNamedDefine, auxiliaryComment, export: exportProperty }; } /** * Applies the plugin by registering its hooks on the compiler. * @param {Compiler} compiler the compiler instance * @returns {void} */ apply(compiler) { const { output } = compiler.options; output.library = this.library; new EnableLibraryPlugin(this.library.type).apply(compiler); } } module.exports = LibraryTemplatePlugin;