mirror of https://github.com/webpack/webpack.git
feat: export `MergeDuplicateChunks` plugin
This commit is contained in:
parent
d7514b4fce
commit
0ab5b9e00c
|
@ -51,7 +51,7 @@ export interface BannerPluginOptions {
|
||||||
*/
|
*/
|
||||||
raw?: boolean;
|
raw?: boolean;
|
||||||
/**
|
/**
|
||||||
* Specifies the banner.
|
* Specifies the stage when add a banner.
|
||||||
*/
|
*/
|
||||||
stage?: number;
|
stage?: number;
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -443,6 +443,9 @@ module.exports = mergeExports(fn, {
|
||||||
get LimitChunkCountPlugin() {
|
get LimitChunkCountPlugin() {
|
||||||
return require("./optimize/LimitChunkCountPlugin");
|
return require("./optimize/LimitChunkCountPlugin");
|
||||||
},
|
},
|
||||||
|
get MergeDuplicateChunksPlugin() {
|
||||||
|
return require("./optimize/MergeDuplicateChunksPlugin.js");
|
||||||
|
},
|
||||||
get MinChunkSizePlugin() {
|
get MinChunkSizePlugin() {
|
||||||
return require("./optimize/MinChunkSizePlugin");
|
return require("./optimize/MinChunkSizePlugin");
|
||||||
},
|
},
|
||||||
|
|
|
@ -6,11 +6,27 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const { STAGE_BASIC } = require("../OptimizationStages");
|
const { STAGE_BASIC } = require("../OptimizationStages");
|
||||||
|
const createSchemaValidation = require("../util/create-schema-validation");
|
||||||
const { runtimeEqual } = require("../util/runtime");
|
const { runtimeEqual } = require("../util/runtime");
|
||||||
|
|
||||||
/** @typedef {import("../Compiler")} Compiler */
|
/** @typedef {import("../Compiler")} Compiler */
|
||||||
|
|
||||||
|
const validate = createSchemaValidation(
|
||||||
|
require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js"),
|
||||||
|
() =>
|
||||||
|
require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.json"),
|
||||||
|
{
|
||||||
|
name: "Merge Duplicate Chunks Plugin",
|
||||||
|
baseDataPath: "options"
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
class MergeDuplicateChunksPlugin {
|
class MergeDuplicateChunksPlugin {
|
||||||
|
constructor(options = { stage: STAGE_BASIC }) {
|
||||||
|
validate(options);
|
||||||
|
this.options = options;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Compiler} compiler the compiler
|
* @param {Compiler} compiler the compiler
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
|
@ -22,7 +38,7 @@ class MergeDuplicateChunksPlugin {
|
||||||
compilation.hooks.optimizeChunks.tap(
|
compilation.hooks.optimizeChunks.tap(
|
||||||
{
|
{
|
||||||
name: "MergeDuplicateChunksPlugin",
|
name: "MergeDuplicateChunksPlugin",
|
||||||
stage: STAGE_BASIC
|
stage: this.options.stage
|
||||||
},
|
},
|
||||||
chunks => {
|
chunks => {
|
||||||
const { chunkGraph, moduleGraph } = compilation;
|
const { chunkGraph, moduleGraph } = compilation;
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
"stage": {
|
"stage": {
|
||||||
"description": "Specifies the banner.",
|
"description": "Specifies the stage when add a banner.",
|
||||||
"type": "number"
|
"type": "number"
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"title": "MergeDuplicateChunksPluginOptions",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"properties": {
|
||||||
|
"stage": {
|
||||||
|
"description": "Specifies the stage for merging duplicate chunks.",
|
||||||
|
"type": "number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4813,22 +4813,22 @@ assets by path *.wasm X KiB
|
||||||
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
||||||
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
||||||
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
asset XXXXXXXXXXXXXXXXXXXX.module.wasm X bytes [emitted] [immutable]
|
||||||
chunk (runtime: main) 573.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
|
chunk (runtime: main) 573.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
|
||||||
./Q_rsqrt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
./Q_rsqrt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
||||||
chunk (runtime: main) 672.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
|
chunk (runtime: main) 672.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
|
||||||
./duff.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
./duff.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
||||||
chunk (runtime: main) 787.bundle.js (id hint: vendors) X bytes [rendered] split chunk (cache group: defaultVendors)
|
chunk (runtime: main) 787.bundle.js (id hint: vendors) X bytes [rendered] split chunk (cache group: defaultVendors)
|
||||||
./node_modules/env.js X bytes [built] [code generated]
|
./node_modules/env.js X bytes [built] [code generated]
|
||||||
chunk (runtime: main) bundle.js (main) X bytes (javascript) X KiB (runtime) [entry] [rendered]
|
chunk (runtime: main) bundle.js (main) X bytes (javascript) X KiB (runtime) [entry] [rendered]
|
||||||
runtime modules X KiB 11 modules
|
runtime modules X KiB 11 modules
|
||||||
./index.js X bytes [built] [code generated]
|
./index.js X bytes [built] [code generated]
|
||||||
chunk (runtime: main) 836.bundle.js X KiB (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
|
chunk (runtime: main) 836.bundle.js X KiB (javascript) X bytes (webassembly) [rendered]
|
||||||
./testFunction.wasm X bytes (javascript) X bytes (webassembly) [dependent] [built] [code generated]
|
./testFunction.wasm X bytes (javascript) X bytes (webassembly) [dependent] [built] [code generated]
|
||||||
./tests.js X KiB [built] [code generated]
|
./tests.js X KiB [built] [code generated]
|
||||||
chunk (runtime: main) 946.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
|
chunk (runtime: main) 946.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
|
||||||
./fact.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
./fact.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
||||||
./fast-math.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
./fast-math.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
||||||
chunk (runtime: main) 989.bundle.js X bytes (javascript) X bytes (webassembly) [rendered] reused as split chunk (cache group: default)
|
chunk (runtime: main) 989.bundle.js X bytes (javascript) X bytes (webassembly) [rendered]
|
||||||
./popcnt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
./popcnt.wasm X bytes (javascript) X bytes (webassembly) [built] [code generated]
|
||||||
runtime modules X KiB 11 modules
|
runtime modules X KiB 11 modules
|
||||||
cacheable modules X KiB (javascript) X KiB (webassembly)
|
cacheable modules X KiB (javascript) X KiB (webassembly)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
const { ModuleFederationPlugin } = require("../../../").container;
|
const webpack = require("../../../");
|
||||||
|
const { ModuleFederationPlugin } = webpack.container;
|
||||||
const {
|
const {
|
||||||
WEBPACK_MODULE_TYPE_PROVIDE
|
WEBPACK_MODULE_TYPE_PROVIDE
|
||||||
} = require("../../../lib/ModuleTypeConstants");
|
} = require("../../../lib/ModuleTypeConstants");
|
||||||
|
@ -70,6 +71,9 @@ module.exports = {
|
||||||
requiredVersion: "=1.0.0"
|
requiredVersion: "=1.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}),
|
||||||
|
new webpack.optimize.MergeDuplicateChunksPlugin({
|
||||||
|
stage: 10
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
stats: {
|
stats: {
|
||||||
|
|
|
@ -513,7 +513,7 @@ declare interface BannerPluginOptions {
|
||||||
raw?: boolean;
|
raw?: boolean;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies the banner.
|
* Specifies the stage when add a banner.
|
||||||
*/
|
*/
|
||||||
stage?: number;
|
stage?: number;
|
||||||
|
|
||||||
|
@ -8643,6 +8643,11 @@ declare class MemoryCachePlugin {
|
||||||
*/
|
*/
|
||||||
apply(compiler: Compiler): void;
|
apply(compiler: Compiler): void;
|
||||||
}
|
}
|
||||||
|
declare class MergeDuplicateChunksPlugin {
|
||||||
|
constructor(options?: { stage: -10 });
|
||||||
|
options: { stage: -10 };
|
||||||
|
apply(compiler: Compiler): void;
|
||||||
|
}
|
||||||
declare class MinChunkSizePlugin {
|
declare class MinChunkSizePlugin {
|
||||||
constructor(options: MinChunkSizePluginOptions);
|
constructor(options: MinChunkSizePluginOptions);
|
||||||
options: MinChunkSizePluginOptions;
|
options: MinChunkSizePluginOptions;
|
||||||
|
@ -16122,6 +16127,7 @@ declare namespace exports {
|
||||||
AggressiveMergingPlugin,
|
AggressiveMergingPlugin,
|
||||||
AggressiveSplittingPlugin,
|
AggressiveSplittingPlugin,
|
||||||
LimitChunkCountPlugin,
|
LimitChunkCountPlugin,
|
||||||
|
MergeDuplicateChunksPlugin,
|
||||||
MinChunkSizePlugin,
|
MinChunkSizePlugin,
|
||||||
ModuleConcatenationPlugin,
|
ModuleConcatenationPlugin,
|
||||||
RealContentHashPlugin,
|
RealContentHashPlugin,
|
||||||
|
|
Loading…
Reference in New Issue