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