diff --git a/.changeset/metal-keys-check.md b/.changeset/metal-keys-check.md new file mode 100644 index 00000000000..7cd9895bb60 --- /dev/null +++ b/.changeset/metal-keys-check.md @@ -0,0 +1,5 @@ +--- +'@module-federation/enhanced': patch +--- + +fix(enhanced): Mark all exports as provided, to avoid webpack's export analysis from marking them as unused since we copy buildMeta diff --git a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts index 7e5d927a70f..3c6ac01f756 100644 --- a/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts +++ b/packages/enhanced/src/lib/sharing/ConsumeSharedPlugin.ts @@ -1,6 +1,6 @@ /* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra, Zackary Jackson @ScriptedAlchemy */ 'use strict'; @@ -736,6 +736,10 @@ class ConsumeSharedPlugin { // This ensures ConsumeSharedModule inherits ESM/CJS detection (exportsType) and other optimization metadata module.buildMeta = { ...fallbackModule.buildMeta }; module.buildInfo = { ...fallbackModule.buildInfo }; + // Mark all exports as provided, to avoid webpack's export analysis from marking them as unused since we copy buildMeta + compilation.moduleGraph + .getExportsInfo(module) + .setUnknownExportsProvided(); } } } diff --git a/packages/enhanced/test/unit/sharing/utils.ts b/packages/enhanced/test/unit/sharing/utils.ts index 6240f9cc19b..bdf1734b068 100644 --- a/packages/enhanced/test/unit/sharing/utils.ts +++ b/packages/enhanced/test/unit/sharing/utils.ts @@ -202,6 +202,9 @@ export const createMockCompilation = () => { const mockModuleGraph = { getModule: jest.fn(), getOutgoingConnections: jest.fn().mockReturnValue([]), + getExportsInfo: jest.fn().mockReturnValue({ + setUnknownExportsProvided: jest.fn(), + }), }; // Cast to any to allow flexible property addition