UNPKG

@module-federation/enhanced

Version:

This package provides enhanced features for module federation.

74 lines (72 loc) 4.2 kB
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } }); const require_runtime = require('../_virtual/_rolldown/runtime.js'); const require_wrapper_BaseWrapperPlugin = require('./BaseWrapperPlugin.js'); let _module_federation_sdk = require("@module-federation/sdk"); let node_path = require("node:path"); node_path = require_runtime.__toESM(node_path); let node_fs = require("node:fs"); node_fs = require_runtime.__toESM(node_fs); let _module_federation_bridge_react_webpack_plugin = require("@module-federation/bridge-react-webpack-plugin"); _module_federation_bridge_react_webpack_plugin = require_runtime.__toESM(_module_federation_bridge_react_webpack_plugin); //#region src/wrapper/ModuleFederationPlugin.ts const PLUGIN_NAME = "ModuleFederationPlugin"; var ModuleFederationPlugin = class extends require_wrapper_BaseWrapperPlugin.default { constructor(options) { super(options, PLUGIN_NAME, "../lib/container/ModuleFederationPlugin"); } createCorePluginInstance(CorePlugin, compiler) { (0, _module_federation_sdk.bindLoggerToCompiler)(_module_federation_sdk.infrastructureLogger, compiler, "EnhancedModuleFederationPlugin"); this._mfPlugin = new CorePlugin(this._options); this._mfPlugin.apply(compiler); const checkBridgeReactInstalled = () => { try { const userPackageJsonPath = node_path.default.resolve(compiler.context, "package.json"); if (node_fs.default.existsSync(userPackageJsonPath)) { const userPackageJson = JSON.parse(node_fs.default.readFileSync(userPackageJsonPath, "utf-8")); return !!{ ...userPackageJson.dependencies, ...userPackageJson.devDependencies }["@module-federation/bridge-react"]; } return false; } catch (error) { return false; } }; const hasBridgeReact = checkBridgeReactInstalled(); const shouldEnableBridgePlugin = () => { if (this._options?.bridge?.enableBridgeRouter === true) return true; if (this._options?.bridge?.enableBridgeRouter === false || this._options?.bridge?.disableAlias === true) { if (this._options?.bridge?.disableAlias === true) _module_federation_sdk.infrastructureLogger.warn("⚠️ [ModuleFederationPlugin] The `disableAlias` option is deprecated and will be removed in a future version.\n Please use `enableBridgeRouter: false` instead:\n {\n bridge: {\n enableBridgeRouter: false // Use this instead of disableAlias: true\n }\n }"); return false; } if (hasBridgeReact) { _module_federation_sdk.infrastructureLogger.info("💡 [ModuleFederationPlugin] Detected @module-federation/bridge-react in your dependencies.\n For better control and to avoid future breaking changes, please explicitly set:\n {\n bridge: {\n enableBridgeRouter: true // Explicitly enable bridge router\n }\n }"); return true; } return false; }; const enableBridgePlugin = shouldEnableBridgePlugin(); if (!enableBridgePlugin && hasBridgeReact) compiler.hooks.afterPlugins.tap("BridgeReactBaseAliasPlugin", () => { try { const bridgeReactBasePath = node_path.default.resolve(compiler.context, "node_modules/@module-federation/bridge-react/dist/base.es.js"); if (!node_fs.default.existsSync(bridgeReactBasePath)) { _module_federation_sdk.infrastructureLogger.warn("⚠️ [ModuleFederationPlugin] bridge-react /base entry not found, falling back to default entry"); return; } compiler.options.resolve.alias = { ...compiler.options.resolve.alias, "@module-federation/bridge-react$": bridgeReactBasePath }; _module_federation_sdk.infrastructureLogger.info("✅ [ModuleFederationPlugin] Router disabled - using /base entry (no react-router-dom)"); } catch (error) { _module_federation_sdk.infrastructureLogger.warn("⚠️ [ModuleFederationPlugin] Failed to set /base alias, using default entry"); } }); if (enableBridgePlugin) new _module_federation_bridge_react_webpack_plugin.default({ moduleFederationOptions: this._options }).apply(compiler); } }; //#endregion exports.PLUGIN_NAME = PLUGIN_NAME; exports.default = ModuleFederationPlugin; //# sourceMappingURL=ModuleFederationPlugin.js.map