From 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 四月 2026 11:46:41 +0800
Subject: [PATCH] 推送

---
 node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js |   35 ++++++++++++++++++++++-------------
 1 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js b/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js
index f0adc66..b4de701 100644
--- a/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js
+++ b/node_modules/webpack/lib/optimize/MergeDuplicateChunksPlugin.js
@@ -6,38 +6,45 @@
 "use strict";
 
 const { STAGE_BASIC } = require("../OptimizationStages");
-const createSchemaValidation = require("../util/create-schema-validation");
 const { runtimeEqual } = require("../util/runtime");
 
 /** @typedef {import("../../declarations/plugins/optimize/MergeDuplicateChunksPlugin").MergeDuplicateChunksPluginOptions} MergeDuplicateChunksPluginOptions */
 /** @typedef {import("../Compiler")} Compiler */
-
-const validate = createSchemaValidation(
-	require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.check"),
-	() =>
-		require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.json"),
-	{
-		name: "Merge Duplicate Chunks Plugin",
-		baseDataPath: "options"
-	}
-);
+/** @typedef {import("../Chunk")} Chunk */
 
 const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
 
 class MergeDuplicateChunksPlugin {
 	/**
-	 * @param {MergeDuplicateChunksPluginOptions} options options object
+	 * Creates an instance of MergeDuplicateChunksPlugin.
+	 * @param {MergeDuplicateChunksPluginOptions=} options options object
 	 */
 	constructor(options = { stage: STAGE_BASIC }) {
-		validate(options);
+		/** @type {MergeDuplicateChunksPluginOptions} */
 		this.options = options;
 	}
 
 	/**
+	 * Applies the plugin by registering its hooks on the compiler.
 	 * @param {Compiler} compiler the compiler
 	 * @returns {void}
 	 */
 	apply(compiler) {
+		compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+			compiler.validate(
+				() =>
+					require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.json"),
+				this.options,
+				{
+					name: "Merge Duplicate Chunks Plugin",
+					baseDataPath: "options"
+				},
+				(options) =>
+					require("../../schemas/plugins/optimize/MergeDuplicateChunksPlugin.check")(
+						options
+					)
+			);
+		});
 		compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
 			compilation.hooks.optimizeChunks.tap(
 				{
@@ -48,11 +55,13 @@
 					const { chunkGraph, moduleGraph } = compilation;
 
 					// remember already tested chunks for performance
+					/** @type {Set<Chunk>} */
 					const notDuplicates = new Set();
 
 					// for each chunk
 					for (const chunk of chunks) {
 						// track a Set of all chunk that could be duplicates
+						/** @type {Set<Chunk> | undefined} */
 						let possibleDuplicates;
 						for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
 							if (possibleDuplicates === undefined) {

--
Gitblit v1.9.3