/var/www/cobraambalaj/node_modules/webpack/lib/optimize
NameSizeModeActions
AggressiveMergingPlugin.js23000644editdlrm
AggressiveSplittingPlugin.js100040644editdlrm
ConcatenatedModule.js530950644editdlrm
EnsureChunkConditionsPlugin.js24870644editdlrm
FlagIncludedChunksPlugin.js37990644editdlrm
InnerGraph.js86540644editdlrm
InnerGraphPlugin.js111530644editdlrm
LimitChunkCountPlugin.js81430644editdlrm
MangleExportsPlugin.js42270644editdlrm
MergeDuplicateChunksPlugin.js36000644editdlrm
MinChunkSizePlugin.js32080644editdlrm
MinMaxSizeWarning.js8190644editdlrm
ModuleConcatenationPlugin.js264140644editdlrm
RealContentHashPlugin.js116680644editdlrm
RemoveEmptyChunksPlugin.js13370644editdlrm
RemoveParentModulesPlugin.js37980644editdlrm
RuntimeChunkPlugin.js10280644editdlrm
SideEffectsFlagPlugin.js102890644editdlrm
SplitChunksPlugin.js527550644editdlrm
Edit: /var/www/cobraambalaj/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js (3600B)
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const { STAGE_BASIC } = require("../OptimizationStages"); const { runtimeEqual } = require("../util/runtime"); /** @typedef {import("../Compiler")} Compiler */ class MergeDuplicateChunksPlugin { /** * @param {Compiler} compiler the compiler * @returns {void} */ apply(compiler) { compiler.hooks.compilation.tap( "MergeDuplicateChunksPlugin", compilation => { compilation.hooks.optimizeChunks.tap( { name: "MergeDuplicateChunksPlugin", stage: STAGE_BASIC }, chunks => { const { chunkGraph, moduleGraph } = compilation; // remember already tested chunks for performance const notDuplicates = new Set(); // for each chunk for (const chunk of chunks) { // track a Set of all chunk that could be duplicates let possibleDuplicates; for (const module of chunkGraph.getChunkModulesIterable(chunk)) { if (possibleDuplicates === undefined) { // when possibleDuplicates is not yet set, // create a new Set from chunks of the current module // including only chunks with the same number of modules for (const dup of chunkGraph.getModuleChunksIterable( module )) { if ( dup !== chunk && chunkGraph.getNumberOfChunkModules(chunk) === chunkGraph.getNumberOfChunkModules(dup) && !notDuplicates.has(dup) ) { // delay allocating the new Set until here, reduce memory pressure if (possibleDuplicates === undefined) { possibleDuplicates = new Set(); } possibleDuplicates.add(dup); } } // when no chunk is possible we can break here if (possibleDuplicates === undefined) break; } else { // validate existing possible duplicates for (const dup of possibleDuplicates) { // remove possible duplicate when module is not contained if (!chunkGraph.isModuleInChunk(module, dup)) { possibleDuplicates.delete(dup); } } // when all chunks has been removed we can break here if (possibleDuplicates.size === 0) break; } } // when we found duplicates if ( possibleDuplicates !== undefined && possibleDuplicates.size > 0 ) { outer: for (const otherChunk of possibleDuplicates) { if (otherChunk.hasRuntime() !== chunk.hasRuntime()) continue; if (chunkGraph.getNumberOfEntryModules(chunk) > 0) continue; if (chunkGraph.getNumberOfEntryModules(otherChunk) > 0) continue; if (!runtimeEqual(chunk.runtime, otherChunk.runtime)) { for (const module of chunkGraph.getChunkModulesIterable( chunk )) { const exportsInfo = moduleGraph.getExportsInfo(module); if ( !exportsInfo.isEquallyUsed( chunk.runtime, otherChunk.runtime ) ) { continue outer; } } } // merge them if (chunkGraph.canChunksBeIntegrated(chunk, otherChunk)) { chunkGraph.integrateChunks(chunk, otherChunk); compilation.chunks.delete(otherChunk); } } } // don't check already processed chunks twice notDuplicates.add(chunk); } } ); } ); } } module.exports = MergeDuplicateChunksPlugin;