|
|
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
-
- const sortByIndex = (a, b) => {
- return a.index - b.index;
- };
-
- const sortByIndex2 = (a, b) => {
- return a.index2 - b.index2;
- };
-
- class ChunkModuleIdRangePlugin {
- constructor(options) {
- this.options = options;
- }
-
- apply(compiler) {
- const options = this.options;
- compiler.hooks.compilation.tap("ChunkModuleIdRangePlugin", compilation => {
- compilation.hooks.moduleIds.tap("ChunkModuleIdRangePlugin", modules => {
- const chunk = compilation.chunks.find(
- chunk => chunk.name === options.name
- );
- if (!chunk) {
- throw new Error(
- `ChunkModuleIdRangePlugin: Chunk with name '${options.name}"' was not found`
- );
- }
-
- let chunkModules;
- if (options.order) {
- chunkModules = Array.from(chunk.modulesIterable);
- switch (options.order) {
- case "index":
- chunkModules.sort(sortByIndex);
- break;
- case "index2":
- chunkModules.sort(sortByIndex2);
- break;
- default:
- throw new Error(
- "ChunkModuleIdRangePlugin: unexpected value of order"
- );
- }
- } else {
- chunkModules = modules.filter(m => {
- return m.chunksIterable.has(chunk);
- });
- }
-
- let currentId = options.start || 0;
- for (let i = 0; i < chunkModules.length; i++) {
- const m = chunkModules[i];
- if (m.id === null) {
- m.id = currentId++;
- }
- if (options.end && currentId > options.end) break;
- }
- });
- });
- }
- }
- module.exports = ChunkModuleIdRangePlugin;
|