1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | "use strict";
|
7 |
|
8 | const {
|
9 | compareModulesByPreOrderIndexOrIdentifier
|
10 | } = require("../util/comparators");
|
11 | const { assignAscendingModuleIds } = require("./IdHelpers");
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | class NaturalModuleIdsPlugin {
|
17 | |
18 |
|
19 |
|
20 |
|
21 |
|
22 | apply(compiler) {
|
23 | compiler.hooks.compilation.tap("NaturalModuleIdsPlugin", compilation => {
|
24 | compilation.hooks.moduleIds.tap("NaturalModuleIdsPlugin", modules => {
|
25 | const chunkGraph = compilation.chunkGraph;
|
26 | const modulesInNaturalOrder = Array.from(modules)
|
27 | .filter(
|
28 | m =>
|
29 | m.needId &&
|
30 | chunkGraph.getNumberOfModuleChunks(m) > 0 &&
|
31 | chunkGraph.getModuleId(m) === null
|
32 | )
|
33 | .sort(
|
34 | compareModulesByPreOrderIndexOrIdentifier(compilation.moduleGraph)
|
35 | );
|
36 | assignAscendingModuleIds(modulesInNaturalOrder, compilation);
|
37 | });
|
38 | });
|
39 | }
|
40 | }
|
41 |
|
42 | module.exports = NaturalModuleIdsPlugin;
|