diff --git a/.changeset/ninety-points-impress.md b/.changeset/ninety-points-impress.md new file mode 100644 index 00000000000..116fb807739 --- /dev/null +++ b/.changeset/ninety-points-impress.md @@ -0,0 +1,6 @@ +--- +'@module-federation/nextjs-mf': patch +'@module-federation/node': patch +--- + +fix(node): use contenthash instead of chunkhash diff --git a/.changeset/sour-dragons-hang.md b/.changeset/sour-dragons-hang.md new file mode 100644 index 00000000000..df66bb7be46 --- /dev/null +++ b/.changeset/sour-dragons-hang.md @@ -0,0 +1,6 @@ +--- +'@module-federation/rsbuild-plugin': patch +'@module-federation/modern-js': patch +--- + +fix(modern-js-plugin): use contenthash instead of chunkhash diff --git a/apps/node-host/webpack.config.js b/apps/node-host/webpack.config.js index 77626757c55..4a4032c6538 100644 --- a/apps/node-host/webpack.config.js +++ b/apps/node-host/webpack.config.js @@ -9,7 +9,7 @@ module.exports = composePlugins(withNx(), async (config) => { config.devtool = false; config.target = 'async-node'; config.output.publicPath = '/testing'; - config.output.chunkFilename = '[id]-[chunkhash].js'; + config.output.chunkFilename = '[id]-[contenthash].js'; config.optimization.chunkIds = 'named'; await new Promise((r) => setTimeout(r, 400)); config.module.rules.pop(); diff --git a/packages/modernjs/src/cli/configPlugin.ts b/packages/modernjs/src/cli/configPlugin.ts index f6ffb0bdec9..bd628a26e15 100644 --- a/packages/modernjs/src/cli/configPlugin.ts +++ b/packages/modernjs/src/cli/configPlugin.ts @@ -353,7 +353,7 @@ export function patchBundlerConfig(options: { uniqueName && !chunkFileName.includes(uniqueName) ) { - const suffix = `${encodeName(uniqueName)}-[chunkhash].js`; + const suffix = `${encodeName(uniqueName)}-[contenthash].js`; chain.output.chunkFilename(chunkFileName.replace('.js', suffix)); } } diff --git a/packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts b/packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts index a61a193fa12..be860298c52 100644 --- a/packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts +++ b/packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts @@ -62,7 +62,7 @@ export function applyServerPlugins( ): void { const chunkFileName = compiler.options?.output?.chunkFilename; const uniqueName = compiler?.options?.output?.uniqueName || options.name; - const suffix = `-[chunkhash].js`; + const suffix = `-[contenthash].js`; // Modify chunk filename to include a unique suffix if not already present if ( diff --git a/packages/node/README.md b/packages/node/README.md index 69f99017142..10f8d78cc75 100644 --- a/packages/node/README.md +++ b/packages/node/README.md @@ -46,7 +46,7 @@ const { ModuleFederationPlugin } = require('@module-federation/enhanced'); const options = { target: 'async-node', output: { - chunkFilename: '[id]-[chunkhash].js', // important to hash chunks + chunkFilename: '[id]-[contenthash].js', // important to hash chunks }, plugins: [ new ModuleFederationPlugin({ diff --git a/packages/node/src/plugins/NodeFederationPlugin.ts b/packages/node/src/plugins/NodeFederationPlugin.ts index c6856139d2a..ddc78522a96 100644 --- a/packages/node/src/plugins/NodeFederationPlugin.ts +++ b/packages/node/src/plugins/NodeFederationPlugin.ts @@ -87,7 +87,7 @@ class NodeFederationPlugin { uniqueName && !chunkFileName.includes(uniqueName) ) { - const suffix = `-[chunkhash].js`; + const suffix = `-[contenthash].js`; compiler.options.output.chunkFilename = chunkFileName.replace( '.js', suffix, diff --git a/packages/node/src/plugins/UniversalFederationPlugin.ts b/packages/node/src/plugins/UniversalFederationPlugin.ts index ed9b402727a..755a92e8e0f 100644 --- a/packages/node/src/plugins/UniversalFederationPlugin.ts +++ b/packages/node/src/plugins/UniversalFederationPlugin.ts @@ -71,7 +71,7 @@ class UniversalFederationPlugin { uniqueName && !chunkFileName.includes(uniqueName) ) { - const suffix = `-[chunkhash].js`; + const suffix = `-[contenthash].js`; compiler.options.output.chunkFilename = chunkFileName.replace( '.js', suffix, diff --git a/packages/rsbuild-plugin/src/cli/ssr.spec.ts b/packages/rsbuild-plugin/src/cli/ssr.spec.ts index 2a399461e4e..d67cf4f9396 100644 --- a/packages/rsbuild-plugin/src/cli/ssr.spec.ts +++ b/packages/rsbuild-plugin/src/cli/ssr.spec.ts @@ -138,7 +138,7 @@ describe('patchSSRRspackConfig', () => { }; const patchedConfig = patchSSRRspackConfig(config, mfConfig); expect(patchedConfig.output?.chunkFilename).toBe( - 'js/[name]myApp-[chunkhash].js', + 'js/[name]myApp-[contenthash].js', ); }); @@ -154,7 +154,7 @@ describe('patchSSRRspackConfig', () => { const mfConfig: moduleFederationPlugin.ModuleFederationPluginOptions = {}; // No name in mfConfig const patchedConfig = patchSSRRspackConfig(config, mfConfig); expect(patchedConfig.output?.chunkFilename).toBe( - 'js/[name]myOutputUniqueName-[chunkhash].js', + 'js/[name]myOutputUniqueName-[contenthash].js', ); }); diff --git a/packages/rsbuild-plugin/src/cli/ssr.ts b/packages/rsbuild-plugin/src/cli/ssr.ts index 54859e125f0..6cc77297b26 100644 --- a/packages/rsbuild-plugin/src/cli/ssr.ts +++ b/packages/rsbuild-plugin/src/cli/ssr.ts @@ -41,7 +41,7 @@ export function patchSSRRspackConfig( uniqueName && !chunkFileName.includes(uniqueName) ) { - const suffix = `${encodeName(uniqueName)}-[chunkhash].js`; + const suffix = `${encodeName(uniqueName)}-[contenthash].js`; config.output.chunkFilename = chunkFileName.replace('.js', suffix); }