| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const DllModuleFactory = require("./DllModuleFactory");const DllEntryDependency = require("./dependencies/DllEntryDependency");const EntryDependency = require("./dependencies/EntryDependency");/** @typedef {import("./Compiler")} Compiler *//** @typedef {import("./Entrypoint").EntryOptions} EntryOptions *//** @typedef {string[]} Entries *//** @typedef {EntryOptions & { name: string }} Options */const PLUGIN_NAME = "DllEntryPlugin";class DllEntryPlugin {	/**	 * @param {string} context context	 * @param {Entries} entries entry names	 * @param {Options} options options	 */	constructor(context, entries, options) {		this.context = context;		this.entries = entries;		this.options = options;	}	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		compiler.hooks.compilation.tap(			PLUGIN_NAME,			(compilation, { normalModuleFactory }) => {				const dllModuleFactory = new DllModuleFactory();				compilation.dependencyFactories.set(					DllEntryDependency,					dllModuleFactory				);				compilation.dependencyFactories.set(					EntryDependency,					normalModuleFactory				);			}		);		compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {			compilation.addEntry(				this.context,				new DllEntryDependency(					this.entries.map((e, idx) => {						const dep = new EntryDependency(e);						dep.loc = {							name: this.options.name,							index: idx						};						return dep;					}),					this.options.name				),				this.options,				error => {					if (error) return callback(error);					callback();				}			);		});	}}module.exports = DllEntryPlugin;
 |