| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const RuntimeGlobals = require("../RuntimeGlobals");const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");/** @typedef {import("../Compiler")} Compiler */class CommonJsChunkLoadingPlugin {	constructor(options) {		options = options || {};		this._asyncChunkLoading = options.asyncChunkLoading;	}	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		const ChunkLoadingRuntimeModule = this._asyncChunkLoading			? require("./ReadFileChunkLoadingRuntimeModule")			: require("./RequireChunkLoadingRuntimeModule");		const chunkLoadingValue = this._asyncChunkLoading			? "async-node"			: "require";		new StartupChunkDependenciesPlugin({			chunkLoading: chunkLoadingValue,			asyncChunkLoading: this._asyncChunkLoading		}).apply(compiler);		compiler.hooks.thisCompilation.tap(			"CommonJsChunkLoadingPlugin",			compilation => {				const globalChunkLoading = compilation.outputOptions.chunkLoading;				const isEnabledForChunk = chunk => {					const options = chunk.getEntryOptions();					const chunkLoading =						options && options.chunkLoading !== undefined							? options.chunkLoading							: globalChunkLoading;					return chunkLoading === chunkLoadingValue;				};				const onceForChunkSet = new WeakSet();				const handler = (chunk, set) => {					if (onceForChunkSet.has(chunk)) return;					onceForChunkSet.add(chunk);					if (!isEnabledForChunk(chunk)) return;					set.add(RuntimeGlobals.moduleFactoriesAddOnly);					set.add(RuntimeGlobals.hasOwnProperty);					compilation.addRuntimeModule(						chunk,						new ChunkLoadingRuntimeModule(set)					);				};				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.ensureChunkHandlers)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.hmrDownloadUpdateHandlers)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.hmrDownloadManifest)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.baseURI)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.externalInstallChunk)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.onChunksLoaded)					.tap("CommonJsChunkLoadingPlugin", handler);				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.ensureChunkHandlers)					.tap("CommonJsChunkLoadingPlugin", (chunk, set) => {						if (!isEnabledForChunk(chunk)) return;						set.add(RuntimeGlobals.getChunkScriptFilename);					});				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.hmrDownloadUpdateHandlers)					.tap("CommonJsChunkLoadingPlugin", (chunk, set) => {						if (!isEnabledForChunk(chunk)) return;						set.add(RuntimeGlobals.getChunkUpdateScriptFilename);						set.add(RuntimeGlobals.moduleCache);						set.add(RuntimeGlobals.hmrModuleData);						set.add(RuntimeGlobals.moduleFactoriesAddOnly);					});				compilation.hooks.runtimeRequirementInTree					.for(RuntimeGlobals.hmrDownloadManifest)					.tap("CommonJsChunkLoadingPlugin", (chunk, set) => {						if (!isEnabledForChunk(chunk)) return;						set.add(RuntimeGlobals.getUpdateManifestFilename);					});			}		);	}}module.exports = CommonJsChunkLoadingPlugin;
 |