From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送
---
node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js | 69 +++++++++++++++++-----------------
1 files changed, 35 insertions(+), 34 deletions(-)
diff --git a/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js b/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js
index b7dfd66..4e7ee47 100644
--- a/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js
+++ b/node_modules/webpack/lib/optimize/AggressiveSplittingPlugin.js
@@ -11,7 +11,6 @@
compareChunks,
compareModulesByIdentifier
} = require("../util/comparators");
-const createSchemaValidation = require("../util/create-schema-validation");
const identifierUtils = require("../util/identifier");
/** @typedef {import("../../declarations/plugins/optimize/AggressiveSplittingPlugin").AggressiveSplittingPluginOptions} AggressiveSplittingPluginOptions */
@@ -21,17 +20,8 @@
/** @typedef {import("../Compiler")} Compiler */
/** @typedef {import("../Module")} Module */
-const validate = createSchemaValidation(
- require("../../schemas/plugins/optimize/AggressiveSplittingPlugin.check"),
- () =>
- require("../../schemas/plugins/optimize/AggressiveSplittingPlugin.json"),
- {
- name: "Aggressive Splitting Plugin",
- baseDataPath: "options"
- }
-);
-
/**
+ * Move module between.
* @param {ChunkGraph} chunkGraph the chunk graph
* @param {Chunk} oldChunk the old chunk
* @param {Chunk} newChunk the new chunk
@@ -43,6 +33,7 @@
};
/**
+ * Checks whether this object is not a entry module.
* @param {ChunkGraph} chunkGraph the chunk graph
* @param {Chunk} chunk the chunk
* @returns {(module: Module) => boolean} filter for entry module
@@ -50,7 +41,7 @@
const isNotAEntryModule = (chunkGraph, chunk) => (module) =>
!chunkGraph.isEntryModuleInChunk(module, chunk);
-/** @typedef {{ id?: NonNullable<Chunk["id"]>, hash?: NonNullable<Chunk["hash"]>, modules: Module[], size: number }} SplitData */
+/** @typedef {{ id?: NonNullable<Chunk["id"]>, hash?: NonNullable<Chunk["hash"]>, modules: string[], size: number }} SplitData */
/** @type {WeakSet<Chunk>} */
const recordedChunks = new WeakSet();
@@ -59,27 +50,16 @@
class AggressiveSplittingPlugin {
/**
+ * Creates an instance of AggressiveSplittingPlugin.
* @param {AggressiveSplittingPluginOptions=} options options object
*/
constructor(options = {}) {
- validate(options);
-
+ /** @type {AggressiveSplittingPluginOptions} */
this.options = options;
- if (typeof this.options.minSize !== "number") {
- this.options.minSize = 30 * 1024;
- }
- if (typeof this.options.maxSize !== "number") {
- this.options.maxSize = 50 * 1024;
- }
- if (typeof this.options.chunkOverhead !== "number") {
- this.options.chunkOverhead = 0;
- }
- if (typeof this.options.entryChunkMultiplicator !== "number") {
- this.options.entryChunkMultiplicator = 1;
- }
}
/**
+ * Was chunk recorded.
* @param {Chunk} chunk the chunk to test
* @returns {boolean} true if the chunk was recorded
*/
@@ -88,11 +68,27 @@
}
/**
- * Apply the plugin
+ * Applies the plugin by registering its hooks on the compiler.
* @param {Compiler} compiler the compiler instance
* @returns {void}
*/
apply(compiler) {
+ compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+ compiler.validate(
+ () =>
+ require("../../schemas/plugins/optimize/AggressiveSplittingPlugin.json"),
+ this.options,
+ {
+ name: "Aggressive Splitting Plugin",
+ baseDataPath: "options"
+ },
+ (options) =>
+ require("../../schemas/plugins/optimize/AggressiveSplittingPlugin.check")(
+ options
+ )
+ );
+ });
+
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
let needAdditionalSeal = false;
/** @type {SplitData[]} */
@@ -114,7 +110,9 @@
(chunks) => {
const chunkGraph = compilation.chunkGraph;
// Precompute stuff
+ /** @type {Map<string, Module>} */
const nameToModuleMap = new Map();
+ /** @type {Map<Module, string>} */
const moduleToNameMap = new Map();
const makePathsRelative =
identifierUtils.makePathsRelative.bindContextCache(
@@ -128,10 +126,10 @@
}
// Check used chunk ids
- /** @typedef {Set<ChunkId>} */
+ /** @type {Set<ChunkId>} */
const usedIds = new Set();
for (const chunk of chunks) {
- usedIds.add(chunk.id);
+ usedIds.add(/** @type {ChunkId} */ (chunk.id));
}
const recordedSplits =
@@ -140,10 +138,11 @@
? [...recordedSplits, ...newSplits]
: recordedSplits;
- const minSize = /** @type {number} */ (this.options.minSize);
- const maxSize = /** @type {number} */ (this.options.maxSize);
+ const minSize = this.options.minSize || 30 * 1024;
+ const maxSize = this.options.maxSize || 50 * 1024;
/**
+ * Returns true when applied, otherwise false.
* @param {SplitData} splitData split data
* @returns {boolean} true when applied, otherwise false
*/
@@ -154,8 +153,8 @@
}
// Get module objects from names
- const selectedModules = splitData.modules.map((name) =>
- nameToModuleMap.get(name)
+ const selectedModules = splitData.modules.map(
+ (name) => /** @type {Module} */ (nameToModuleMap.get(name))
);
// Does the modules exist at all?
@@ -240,6 +239,7 @@
const modules = chunkGraph
.getOrderedChunkModules(chunk, compareModulesByIdentifier)
.filter(isNotAEntryModule(chunkGraph, chunk));
+ /** @type {Module[]} */
const selectedModules = [];
let selectedModulesSize = 0;
for (let k = 0; k < modules.length; k++) {
@@ -255,7 +255,7 @@
/** @type {SplitData} */
const splitData = {
modules: selectedModules
- .map((m) => moduleToNameMap.get(m))
+ .map((m) => /** @type {string} */ (moduleToNameMap.get(m)))
.sort(),
size: selectedModulesSize
};
@@ -271,6 +271,7 @@
);
compilation.hooks.recordHash.tap(PLUGIN_NAME, (records) => {
// 4. save made splittings to records
+ /** @type {Set<SplitData>} */
const allSplits = new Set();
/** @type {Set<SplitData>} */
const invalidSplits = new Set();
--
Gitblit v1.9.3