WXL
4 天以前 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1
node_modules/webpack/lib/container/ModuleFederationPlugin.js
@@ -9,7 +9,6 @@
const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check");
const Compilation = require("../Compilation");
const SharePlugin = require("../sharing/SharePlugin");
const createSchemaValidation = require("../util/create-schema-validation");
const ContainerPlugin = require("./ContainerPlugin");
const ContainerReferencePlugin = require("./ContainerReferencePlugin");
const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
@@ -20,19 +19,11 @@
/** @typedef {import("../Dependency")} Dependency */
/**
 * Defines the compilation hooks type used by this module.
 * @typedef {object} CompilationHooks
 * @property {SyncHook<Dependency>} addContainerEntryDependency
 * @property {SyncHook<Dependency>} addFederationRuntimeDependency
 */
const validate = createSchemaValidation(
   require("../../schemas/plugins/container/ModuleFederationPlugin.check"),
   () => require("../../schemas/plugins/container/ModuleFederationPlugin.json"),
   {
      name: "Module Federation Plugin",
      baseDataPath: "options"
   }
);
/** @type {WeakMap<Compilation, CompilationHooks>} */
const compilationHooksMap = new WeakMap();
@@ -40,12 +31,12 @@
class ModuleFederationPlugin {
   /**
    * Creates an instance of ModuleFederationPlugin.
    * @param {ModuleFederationPluginOptions} options options
    */
   constructor(options) {
      validate(options);
      this._options = options;
      /** @type {ModuleFederationPluginOptions} */
      this.options = options;
   }
   /**
@@ -71,12 +62,27 @@
   }
   /**
    * Apply the plugin
    * Applies the plugin by registering its hooks on the compiler.
    * @param {Compiler} compiler the compiler instance
    * @returns {void}
    */
   apply(compiler) {
      const { _options: options } = this;
      compiler.hooks.validate.tap(PLUGIN_NAME, () => {
         compiler.validate(
            () =>
               require("../../schemas/plugins/container/ModuleFederationPlugin.json"),
            this.options,
            {
               name: "Module Federation Plugin",
               baseDataPath: "options"
            },
            (options) =>
               require("../../schemas/plugins/container/ModuleFederationPlugin.check")(
                  options
               )
         );
      });
      const { options } = this;
      const library = options.library || { type: "var", name: options.name };
      const remoteType =
         options.remoteType ||