| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const DllEntryPlugin = require("./DllEntryPlugin");const FlagAllModulesAsUsedPlugin = require("./FlagAllModulesAsUsedPlugin");const LibManifestPlugin = require("./LibManifestPlugin");const createSchemaValidation = require("./util/create-schema-validation");/** @typedef {import("../declarations/plugins/DllPlugin").DllPluginOptions} DllPluginOptions *//** @typedef {import("./Compiler")} Compiler */const validate = createSchemaValidation(	require("../schemas/plugins/DllPlugin.check.js"),	() => require("../schemas/plugins/DllPlugin.json"),	{		name: "Dll Plugin",		baseDataPath: "options"	});class DllPlugin {	/**	 * @param {DllPluginOptions} options options object	 */	constructor(options) {		validate(options);		this.options = {			...options,			entryOnly: options.entryOnly !== false		};	}	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		compiler.hooks.entryOption.tap("DllPlugin", (context, entry) => {			if (typeof entry !== "function") {				for (const name of Object.keys(entry)) {					const options = {						name,						filename: entry.filename					};					new DllEntryPlugin(context, entry[name].import, options).apply(						compiler					);				}			} else {				throw new Error(					"DllPlugin doesn't support dynamic entry (function) yet"				);			}			return true;		});		new LibManifestPlugin(this.options).apply(compiler);		if (!this.options.entryOnly) {			new FlagAllModulesAsUsedPlugin("DllPlugin").apply(compiler);		}	}}module.exports = DllPlugin;
 |