123456789101112131415161718192021222324252627282930313233343536373839404142 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- /** @typedef {import("../Compiler")} Compiler */
- class NaturalChunkOrderPlugin {
- /**
- * @param {Compiler} compiler webpack compiler
- * @returns {void}
- */
- apply(compiler) {
- compiler.hooks.compilation.tap("NaturalChunkOrderPlugin", compilation => {
- compilation.hooks.optimizeChunkOrder.tap(
- "NaturalChunkOrderPlugin",
- chunks => {
- chunks.sort((chunkA, chunkB) => {
- const a = chunkA.modulesIterable[Symbol.iterator]();
- const b = chunkB.modulesIterable[Symbol.iterator]();
- // eslint-disable-next-line no-constant-condition
- while (true) {
- const aItem = a.next();
- const bItem = b.next();
- if (aItem.done && bItem.done) return 0;
- if (aItem.done) return -1;
- if (bItem.done) return 1;
- const aModuleId = aItem.value.id;
- const bModuleId = bItem.value.id;
- if (aModuleId < bModuleId) return -1;
- if (aModuleId > bModuleId) return 1;
- }
- });
- }
- );
- });
- }
- }
- module.exports = NaturalChunkOrderPlugin;
|