| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const { ConcatSource } = require("webpack-sources");/** @typedef {import("./Compilation")} Compilation */class SetVarMainTemplatePlugin {	/**	 * @param {string} varExpression the accessor where the library is exported	 * @param {boolean} copyObject specify copying the exports	 */	constructor(varExpression, copyObject) {		/** @type {string} */		this.varExpression = varExpression;		/** @type {boolean} */		this.copyObject = copyObject;	}	/**	 * @param {Compilation} compilation the compilation instance	 * @returns {void}	 */	apply(compilation) {		const { mainTemplate, chunkTemplate } = compilation;		const onRenderWithEntry = (source, chunk, hash) => {			const varExpression = mainTemplate.getAssetPath(this.varExpression, {				hash,				chunk			});			if (this.copyObject) {				return new ConcatSource(					`(function(e, a) { for(var i in a) e[i] = a[i]; }(${varExpression}, `,					source,					"))"				);			} else {				const prefix = `${varExpression} =\n`;				return new ConcatSource(prefix, source);			}		};		for (const template of [mainTemplate, chunkTemplate]) {			template.hooks.renderWithEntry.tap(				"SetVarMainTemplatePlugin",				onRenderWithEntry			);		}		mainTemplate.hooks.globalHashPaths.tap(			"SetVarMainTemplatePlugin",			paths => {				if (this.varExpression) paths.push(this.varExpression);				return paths;			}		);		mainTemplate.hooks.hash.tap("SetVarMainTemplatePlugin", hash => {			hash.update("set var");			hash.update(`${this.varExpression}`);			hash.update(`${this.copyObject}`);		});	}}module.exports = SetVarMainTemplatePlugin;
 |