UNPKG

webpack

Version:

Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.

55 lines (49 loc) 1.74 kB
/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const RuntimeGlobals = require("../RuntimeGlobals"); const RuntimeModule = require("../RuntimeModule"); const Template = require("../Template"); class EnsureChunkRuntimeModule extends RuntimeModule { constructor(runtimeRequirements) { super("ensure chunk"); this.runtimeRequirements = runtimeRequirements; } /** * @returns {string} runtime code */ generate() { const { runtimeTemplate } = this.compilation; // Check if there are non initial chunks which need to be imported using require-ensure if (this.runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) { const handlers = RuntimeGlobals.ensureChunkHandlers; return Template.asString([ `${handlers} = {};`, "// This file contains only the entry chunk.", "// The chunk loading function for additional chunks", `${RuntimeGlobals.ensureChunk} = ${runtimeTemplate.basicFunction( "chunkId", [ `return Promise.all(Object.keys(${handlers}).reduce(${runtimeTemplate.basicFunction( "promises, key", [`${handlers}[key](chunkId, promises);`, "return promises;"] )}, []));` ] )};` ]); } else { // There ensureChunk is used somewhere in the tree, so we need an empty requireEnsure // function. This can happen with multiple entrypoints. return Template.asString([ "// The chunk loading function for additional chunks", "// Since all referenced chunks are already included", "// in this file, this function is empty here.", `${RuntimeGlobals.ensureChunk} = ${runtimeTemplate.returningFunction( "Promise.resolve()" )};` ]); } } } module.exports = EnsureChunkRuntimeModule;