Skip to content

Commit f9335c7

Browse files
fix(nextjs-mf): skip share next internals (#2270)
Co-authored-by: ScriptedAlchemy <[email protected]>
1 parent c1efbbf commit f9335c7

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

.changeset/light-tomatoes-camp.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@module-federation/nextjs-mf': patch
3+
'@module-federation/utilities': patch
4+
---
5+
6+
no default expose when skip sharing next internals enabled

packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ import {
2828
} from './apply-server-plugins';
2929
import { applyClientPlugins } from './apply-client-plugins';
3030
import { ModuleFederationPlugin } from '@module-federation/enhanced';
31+
import type { moduleFederationPlugin } from '@module-federation/sdk';
32+
3133
import path from 'path';
3234
/**
3335
* NextFederationPlugin is a webpack plugin that handles Next.js application federation using Module Federation.
3436
*/
3537
export class NextFederationPlugin {
36-
private _options: ModuleFederationPluginOptions;
38+
private _options: moduleFederationPlugin.ModuleFederationPluginOptions;
3739
private _extraOptions: NextFederationPluginExtraOptions;
3840
public name: string;
3941
/**
@@ -140,25 +142,31 @@ export class NextFederationPlugin {
140142
compiler: Compiler,
141143
isServer: boolean,
142144
): ModuleFederationPluginOptions {
145+
console.log(this._extraOptions.skipSharingNextInternals);
143146
const defaultShared = this._extraOptions.skipSharingNextInternals
144147
? {}
145148
: retrieveDefaultShared(isServer);
146149
const noop = this.getNoopPath();
150+
151+
const defaultExpose = this._extraOptions.skipSharingNextInternals
152+
? {}
153+
: {
154+
'./noop': noop,
155+
'./react': require.resolve('react'),
156+
'./react-dom': require.resolve('react-dom'),
157+
'./next/router': require.resolve('next/router'),
158+
};
147159
return {
148160
...this._options,
149161
runtime: false,
150162
remoteType: 'script',
151-
// @ts-ignore
152163
runtimePlugins: [
153164
require.resolve(path.join(__dirname, '../container/runtimePlugin')),
154-
//@ts-ignore
155165
...(this._options.runtimePlugins || []),
156166
],
167+
//@ts-ignore
157168
exposes: {
158-
'./noop': noop,
159-
'./react': require.resolve('react'),
160-
'./react-dom': require.resolve('react-dom'),
161-
'./next/router': require.resolve('next/router'),
169+
...(this._extraOptions.skipSharingNextInternals ? {} : defaultExpose),
162170
...this._options.exposes,
163171
...(this._extraOptions.exposePages
164172
? exposeNextjsPages(compiler.options.context as string)

packages/utilities/src/types/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
22
/// <reference path="../../../../node_modules/webpack/module.d.ts" />
3-
import { moduleFederationPlugin } from '@module-federation/sdk';
3+
import type { moduleFederationPlugin } from '@module-federation/sdk';
44

55
import type { container, WebpackOptionsNormalized } from 'webpack';
66

0 commit comments

Comments
 (0)