UNPKG

1.04 kBJavaScriptView Raw
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Florent Cailhol @ooflorent
4*/
5
6"use strict";
7
8const {
9 compareModulesByPreOrderIndexOrIdentifier
10} = require("../util/comparators");
11const {
12 assignAscendingModuleIds,
13 getUsedModuleIdsAndModules
14} = require("./IdHelpers");
15
16/** @typedef {import("../Compiler")} Compiler */
17/** @typedef {import("../Module")} Module */
18
19class NaturalModuleIdsPlugin {
20 /**
21 * Apply the plugin
22 * @param {Compiler} compiler the compiler instance
23 * @returns {void}
24 */
25 apply(compiler) {
26 compiler.hooks.compilation.tap("NaturalModuleIdsPlugin", compilation => {
27 compilation.hooks.moduleIds.tap("NaturalModuleIdsPlugin", modules => {
28 const [usedIds, modulesInNaturalOrder] =
29 getUsedModuleIdsAndModules(compilation);
30 modulesInNaturalOrder.sort(
31 compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
32 );
33 assignAscendingModuleIds(usedIds, modulesInNaturalOrder, compilation);
34 });
35 });
36 }
37}
38
39module.exports = NaturalModuleIdsPlugin;