MCPcopy
hub / github.com/webpack/webpack / compareEntries

Function compareEntries

lib/optimize/SplitChunksPlugin.js:272–296  ·  view source on GitHub ↗
(a, b)

Source from the content-addressed store, hash-verified

270 * @returns {number} compare result
271 */
272const compareEntries = (a, b) => {
273 // 1. by priority
274 const diffPriority = a.cacheGroup.priority - b.cacheGroup.priority;
275 if (diffPriority) return diffPriority;
276 // 2. by number of chunks
277 const diffCount = a.chunks.size - b.chunks.size;
278 if (diffCount) return diffCount;
279 // 3. by size reduction
280 const aSizeReduce = totalSize(a.sizes) * (a.chunks.size - 1);
281 const bSizeReduce = totalSize(b.sizes) * (b.chunks.size - 1);
282 const diffSizeReduce = aSizeReduce - bSizeReduce;
283 if (diffSizeReduce) return diffSizeReduce;
284 // 4. by cache group index
285 const indexDiff = b.cacheGroupIndex - a.cacheGroupIndex;
286 if (indexDiff) return indexDiff;
287 // 5. by number of modules (to be able to compare by identifier)
288 const modulesA = a.modules;
289 const modulesB = b.modules;
290 const diff = modulesA.size - modulesB.size;
291 if (diff) return diff;
292 // 6. by module identifiers
293 modulesA.sort();
294 modulesB.sort();
295 return compareModuleIterables(modulesA, modulesB);
296};
297
298/**
299 * Initial chunk filter.

Callers 1

applyMethod · 0.85

Calls 2

totalSizeFunction · 0.85
sortMethod · 0.80

Tested by

no test coverage detected