fix(module-federation): use runtimeChunk false when not in dev mode (#31256)

## Current Behavior
In #30637 `runtimeChunk: false` was removed to allow HMR for styles.

## Expected Behavior
We need to set runtimeChunk to false or multiple when working with MF.
https://github.com/nrwl/nx/issues/31114#issuecomment-2881996043

## Related Issue(s)

Fixes #31114
This commit is contained in:
Colum Ferry 2025-05-21 14:34:40 +01:00 committed by GitHub
parent 2ec086a4b6
commit 1ab77c8a55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 28 additions and 0 deletions

View File

@ -11,6 +11,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) { if (global.NX_GRAPH_CREATION) {
return (config) => config; return (config) => config;
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } = const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options, { await getModuleFederationConfig(options, {
@ -27,6 +28,9 @@ export async function withModuleFederationForSSR(
}, },
optimization: { optimization: {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}, },
resolve: { resolve: {
...(config.resolve ?? {}), ...(config.resolve ?? {}),

View File

@ -12,6 +12,7 @@ export async function withModuleFederation(
if (global.NX_GRAPH_CREATION) { if (global.NX_GRAPH_CREATION) {
return (config) => config; return (config) => config;
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } = const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options); await getModuleFederationConfig(options);
@ -26,6 +27,9 @@ export async function withModuleFederation(
}, },
optimization: { optimization: {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}, },
resolve: { resolve: {
...(config.resolve ?? {}), ...(config.resolve ?? {}),

View File

@ -12,6 +12,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) { if (global.NX_GRAPH_CREATION) {
return (config) => config; return (config) => config;
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } = const { sharedLibraries, sharedDependencies, mappedRemotes } =
getModuleFederationConfig(options, { getModuleFederationConfig(options, {
@ -26,6 +27,9 @@ export async function withModuleFederationForSSR(
}; };
config.optimization = { config.optimization = {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}; };
config.plugins.push( config.plugins.push(

View File

@ -24,6 +24,7 @@ export async function withModuleFederation(
return config; return config;
}; };
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedDependencies, sharedLibraries, mappedRemotes } = const { sharedDependencies, sharedLibraries, mappedRemotes } =
getModuleFederationConfig(options); getModuleFederationConfig(options);
@ -42,6 +43,9 @@ export async function withModuleFederation(
config.optimization = { config.optimization = {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}; };
if ( if (

View File

@ -12,6 +12,7 @@ export async function withModuleFederationForSSR(
if (global.NX_GRAPH_CREATION) { if (global.NX_GRAPH_CREATION) {
return (config) => config; return (config) => config;
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedLibraries, sharedDependencies, mappedRemotes } = const { sharedLibraries, sharedDependencies, mappedRemotes } =
await getModuleFederationConfig(options, { await getModuleFederationConfig(options, {
@ -23,6 +24,9 @@ export async function withModuleFederationForSSR(
config.output.uniqueName = options.name; config.output.uniqueName = options.name;
config.optimization = { config.optimization = {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}; };
config.plugins.push( config.plugins.push(

View File

@ -16,6 +16,7 @@ export async function withModuleFederation(
if (global.NX_GRAPH_CREATION) { if (global.NX_GRAPH_CREATION) {
return (config) => config; return (config) => config;
} }
const isDevServer = process.env['WEBPACK_SERVE'];
const { sharedDependencies, sharedLibraries, mappedRemotes } = const { sharedDependencies, sharedLibraries, mappedRemotes } =
await getModuleFederationConfig(options); await getModuleFederationConfig(options);
@ -27,6 +28,9 @@ export async function withModuleFederation(
config.output.scriptType = 'text/javascript'; config.output.scriptType = 'text/javascript';
config.optimization = { config.optimization = {
...(config.optimization ?? {}), ...(config.optimization ?? {}),
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}; };
if ( if (

View File

@ -64,6 +64,7 @@ function applyNxIndependentConfig(
): void { ): void {
const isProd = const isProd =
process.env.NODE_ENV === 'production' || options.mode === 'production'; process.env.NODE_ENV === 'production' || options.mode === 'production';
const isDevServer = process.env['WEBPACK_SERVE'];
const hashFormat = getOutputHashFormat(options.outputHashing as string); const hashFormat = getOutputHashFormat(options.outputHashing as string);
config.context = path.join(options.root, options.projectRoot); config.context = path.join(options.root, options.projectRoot);
config.target ??= options.target as 'async-node' | 'node' | 'web'; config.target ??= options.target as 'async-node' | 'node' | 'web';
@ -178,6 +179,9 @@ function applyNxIndependentConfig(
}), }),
], ],
concatenateModules: true, concatenateModules: true,
runtimeChunk: isDevServer
? config.optimization?.runtimeChunk ?? undefined
: false,
}; };
config.stats = { config.stats = {