| 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;
 
 
  |