From 44574eaef92f81526fbe59fcc741627e4b70550c Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Mon, 26 Sep 2022 21:30:56 +0300 Subject: [PATCH] fix: order modules in different platforms --- lib/javascript/JavascriptModulesPlugin.js | 7 +++++-- lib/util/comparators.js | 19 +++++++++++++++++++ types.d.ts | 3 +++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/javascript/JavascriptModulesPlugin.js b/lib/javascript/JavascriptModulesPlugin.js index 42d6f3522..6e6af00b4 100644 --- a/lib/javascript/JavascriptModulesPlugin.js +++ b/lib/javascript/JavascriptModulesPlugin.js @@ -22,7 +22,10 @@ const RuntimeGlobals = require("../RuntimeGlobals"); const Template = require("../Template"); const { last, someInIterable } = require("../util/IterableHelpers"); const StringXor = require("../util/StringXor"); -const { compareModulesByIdentifier } = require("../util/comparators"); +const { + compareModulesByIdentifier, + compareModulesByReadableIdentifier +} = require("../util/comparators"); const createHash = require("../util/createHash"); const nonNumericOnlyHash = require("../util/nonNumericOnlyHash"); const { intersectRuntime } = require("../util/runtime"); @@ -692,7 +695,7 @@ class JavascriptModulesPlugin { chunkGraph.getOrderedChunkModulesIterableBySourceType( chunk, "javascript", - compareModulesByIdentifier + compareModulesByReadableIdentifier(compilation.requestShortener) ) || [] ); diff --git a/lib/util/comparators.js b/lib/util/comparators.js index 790c147ad..5e531c691 100644 --- a/lib/util/comparators.js +++ b/lib/util/comparators.js @@ -13,6 +13,7 @@ const { compareRuntime } = require("./runtime"); /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */ /** @typedef {import("../Module")} Module */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../RequestShortener")} RequestShortener */ /** @template T @typedef {function(T, T): -1|0|1} Comparator */ /** @template TArg @template T @typedef {function(TArg, T, T): -1|0|1} RawParameterizedComparator */ @@ -58,6 +59,24 @@ exports.compareModulesByIdentifier = (a, b) => { return compareIds(a.identifier(), b.identifier()); }; +/** + * @param {RequestShortener} requestShortener Request shortener + * @returns {(a: Module, b: Module) => -1|0|1} Function for compare + */ +exports.compareModulesByReadableIdentifier = requestShortener => { + /** + * @param {Module} a module + * @param {Module} b module + * @returns {-1|0|1} compare result + */ + return (a, b) => { + return compareIds( + a.readableIdentifier(requestShortener), + b.readableIdentifier(requestShortener) + ); + }; +}; + /** * @param {ChunkGraph} chunkGraph the chunk graph * @param {Module} a module diff --git a/types.d.ts b/types.d.ts index 7bbee39ab..c2963f3fc 100644 --- a/types.d.ts +++ b/types.d.ts @@ -12925,6 +12925,9 @@ declare namespace exports { a: Module, b: Module ) => 0 | 1 | -1; + export let compareModulesByReadableIdentifier: ( + requestShortener: RequestShortener + ) => (a: Module, b: Module) => 0 | 1 | -1; export let compareModulesById: ParameterizedComparator< ChunkGraph, Module