You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.6 KiB
48 lines
1.6 KiB
/* |
|
MIT License http://www.opensource.org/licenses/mit-license.php |
|
Author Tobias Koppers @sokra |
|
*/ |
|
|
|
"use strict"; |
|
|
|
const EnableLibraryPlugin = require("./library/EnableLibraryPlugin"); |
|
|
|
/** @typedef {import("../declarations/WebpackOptions").AuxiliaryComment} AuxiliaryComment */ |
|
/** @typedef {import("../declarations/WebpackOptions").LibraryExport} LibraryExport */ |
|
/** @typedef {import("../declarations/WebpackOptions").LibraryName} LibraryName */ |
|
/** @typedef {import("../declarations/WebpackOptions").LibraryType} LibraryType */ |
|
/** @typedef {import("../declarations/WebpackOptions").UmdNamedDefine} UmdNamedDefine */ |
|
/** @typedef {import("./Compiler")} Compiler */ |
|
|
|
// TODO webpack 6 remove |
|
class 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 |
|
}; |
|
} |
|
|
|
/** |
|
* Apply the plugin |
|
* @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;
|
|
|