✏️ 编辑:ModuleFederationPlugin.js
路径:
/home/boguraj1/public_html/jobsite/node_modules/webpack/lib/container/ModuleFederationPlugin.js
大小:2.84 KB · 修改:2022-11-21 20:12:44 · 权限:0644 · 可写
← 返回目录
👁 查看
⬇ 下载
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra and Zackary Jackson @ScriptedAlchemy */ "use strict"; const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check.js"); const SharePlugin = require("../sharing/SharePlugin"); const createSchemaValidation = require("../util/create-schema-validation"); const ContainerPlugin = require("./ContainerPlugin"); const ContainerReferencePlugin = require("./ContainerReferencePlugin"); /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ExternalsType} ExternalsType */ /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ModuleFederationPluginOptions} ModuleFederationPluginOptions */ /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").Shared} Shared */ /** @typedef {import("../Compiler")} Compiler */ const validate = createSchemaValidation( require("../../schemas/plugins/container/ModuleFederationPlugin.check.js"), () => require("../../schemas/plugins/container/ModuleFederationPlugin.json"), { name: "Module Federation Plugin", baseDataPath: "options" } ); class ModuleFederationPlugin { /** * @param {ModuleFederationPluginOptions} options options */ constructor(options) { validate(options); this._options = options; } /** * Apply the plugin * @param {Compiler} compiler the compiler instance * @returns {void} */ apply(compiler) { const { _options: options } = this; const library = options.library || { type: "var", name: options.name }; const remoteType = options.remoteType || (options.library && isValidExternalsType(options.library.type) ? /** @type {ExternalsType} */ (options.library.type) : "script"); if ( library && !compiler.options.output.enabledLibraryTypes.includes(library.type) ) { compiler.options.output.enabledLibraryTypes.push(library.type); } compiler.hooks.afterPlugins.tap("ModuleFederationPlugin", () => { if ( options.exposes && (Array.isArray(options.exposes) ? options.exposes.length > 0 : Object.keys(options.exposes).length > 0) ) { new ContainerPlugin({ name: options.name, library, filename: options.filename, runtime: options.runtime, shareScope: options.shareScope, exposes: options.exposes }).apply(compiler); } if ( options.remotes && (Array.isArray(options.remotes) ? options.remotes.length > 0 : Object.keys(options.remotes).length > 0) ) { new ContainerReferencePlugin({ remoteType, shareScope: options.shareScope, remotes: options.remotes }).apply(compiler); } if (options.shared) { new SharePlugin({ shared: options.shared, shareScope: options.shareScope }).apply(compiler); } }); } } module.exports = ModuleFederationPlugin;
💾 保存
取消
保存为 UTF-8,换行统一为 LF