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/container/ContainerPlugin.js |   91 ++++++++++++++++++++++++---------------------
 1 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/node_modules/webpack/lib/container/ContainerPlugin.js b/node_modules/webpack/lib/container/ContainerPlugin.js
index 15ecc90..596599d 100644
--- a/node_modules/webpack/lib/container/ContainerPlugin.js
+++ b/node_modules/webpack/lib/container/ContainerPlugin.js
@@ -5,7 +5,6 @@
 
 "use strict";
 
-const createSchemaValidation = require("../util/create-schema-validation");
 const memoize = require("../util/memoize");
 const ContainerEntryDependency = require("./ContainerEntryDependency");
 const ContainerEntryModuleFactory = require("./ContainerEntryModuleFactory");
@@ -20,74 +19,80 @@
 	require("./ModuleFederationPlugin")
 );
 
-const validate = createSchemaValidation(
-	require("../../schemas/plugins/container/ContainerPlugin.check"),
-	() => require("../../schemas/plugins/container/ContainerPlugin.json"),
-	{
-		name: "Container Plugin",
-		baseDataPath: "options"
-	}
-);
-
 const PLUGIN_NAME = "ContainerPlugin";
 
 class ContainerPlugin {
 	/**
+	 * Creates an instance of ContainerPlugin.
 	 * @param {ContainerPluginOptions} options options
 	 */
 	constructor(options) {
-		validate(options);
-
-		this._options = {
-			name: options.name,
-			shareScope: options.shareScope || "default",
-			library: options.library || {
-				type: "var",
-				name: options.name
-			},
-			runtime: options.runtime,
-			filename: options.filename || undefined,
-			exposes: /** @type {ExposesList} */ (
-				parseOptions(
-					options.exposes,
-					(item) => ({
-						import: Array.isArray(item) ? item : [item],
-						name: undefined
-					}),
-					(item) => ({
-						import: Array.isArray(item.import) ? item.import : [item.import],
-						name: item.name || undefined
-					})
-				)
-			)
-		};
+		/** @type {ContainerPluginOptions} */
+		this.options = options;
 	}
 
 	/**
-	 * Apply the plugin
+	 * Applies the plugin by registering its hooks on the compiler.
 	 * @param {Compiler} compiler the compiler instance
 	 * @returns {void}
 	 */
 	apply(compiler) {
-		const { name, exposes, shareScope, filename, library, runtime } =
-			this._options;
+		compiler.hooks.validate.tap(PLUGIN_NAME, () => {
+			compiler.validate(
+				() => require("../../schemas/plugins/container/ContainerPlugin.json"),
+				this.options,
+				{
+					name: "Container Plugin",
+					baseDataPath: "options"
+				},
+				(options) =>
+					require("../../schemas/plugins/container/ContainerPlugin.check")(
+						options
+					)
+			);
+		});
+
+		const library = this.options.library || {
+			type: "var",
+			name: this.options.name
+		};
 
 		if (!compiler.options.output.enabledLibraryTypes.includes(library.type)) {
 			compiler.options.output.enabledLibraryTypes.push(library.type);
 		}
 
+		const exposes = /** @type {ExposesList} */ (
+			parseOptions(
+				this.options.exposes,
+				(item) => ({
+					import: Array.isArray(item) ? item : [item],
+					name: undefined
+				}),
+				(item) => ({
+					import: Array.isArray(item.import) ? item.import : [item.import],
+					name: item.name || undefined
+				})
+			)
+		);
+
+		const shareScope = this.options.shareScope || "default";
+
 		compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
 			const hooks =
 				getModuleFederationPlugin().getCompilationHooks(compilation);
-			const dep = new ContainerEntryDependency(name, exposes, shareScope);
-			dep.loc = { name };
+			const dep = new ContainerEntryDependency(
+				this.options.name,
+				exposes,
+				shareScope
+			);
+			dep.loc = { name: this.options.name };
 			compilation.addEntry(
 				compilation.options.context,
 				dep,
 				{
-					name,
-					filename,
-					runtime,
+					name: this.options.name,
+					filename: this.options.filename,
+					runtime: this.options.runtime,
 					library
 				},
 				(error) => {

--
Gitblit v1.9.3