@module-federation/rsbuild-plugin 0.0.0-refactor-manifest-20251016072532 → 0.0.0-research-issue-4085-20251016232757

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { ModuleFederationPlugin, PLUGIN_NAME } from '@module-federation/enhanced/rspack';
2
- import { SSR_DIR, StatsAssetResource } from '../utils';
2
+ import { SSR_DIR } from '../utils';
3
3
  import type { moduleFederationPlugin } from '@module-federation/sdk';
4
4
  import type { RsbuildPlugin, Rspack } from '@rsbuild/core';
5
5
  type ModuleFederationOptions = moduleFederationPlugin.ModuleFederationPluginOptions;
@@ -14,10 +14,7 @@ type ExposedAPIType = {
14
14
  browserPlugin?: ModuleFederationPlugin;
15
15
  rspressSSGPlugin?: ModuleFederationPlugin;
16
16
  distOutputDir?: string;
17
- browserEnvironmentName?: string;
18
- nodeEnvironmentName?: string;
19
17
  };
20
- assetResources: Record<string, StatsAssetResource>;
21
18
  isSSRConfig: typeof isSSRConfig;
22
19
  isRspressSSGConfig: typeof isRspressSSGConfig;
23
20
  };
package/dist/index.js CHANGED
@@ -136,21 +136,21 @@ function mergeManifest(browserManifest, nodeManifest) {
136
136
  if ('publicPath' in browserManifest.metaData) browserManifest.metaData.ssrPublicPath = nodeManifest.metaData.publicPath;
137
137
  return browserManifest;
138
138
  }
139
- function mergeStatsAndManifest(nodeAssets, browserAssets) {
140
- const { stats: browserStats, manifest: browserManifest } = browserAssets;
141
- const { stats: nodeStats, manifest: nodeManifest } = nodeAssets;
142
- if (!browserStats || !nodeStats || !browserManifest || !nodeManifest) throw new Error('Failed to read stats or manifest assets for merge');
143
- const mergedStats = mergeStats(browserStats.data, nodeStats.data);
144
- const mergedManifest = mergeManifest(browserManifest.data, nodeManifest.data);
139
+ function mergeStatsAndManifest(nodePlugin, browserPlugin) {
140
+ const nodeResourceInfo = nodePlugin.statsResourceInfo;
141
+ const browserResourceInfo = browserPlugin.statsResourceInfo;
142
+ if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) throw new Error('can not get browserResourceInfo or nodeResourceInfo');
143
+ const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
144
+ const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
145
145
  return {
146
146
  mergedStats: mergedStats,
147
- mergedStatsFilePath: browserStats.filename,
147
+ mergedStatsFilePath: browserResourceInfo.stats.filename,
148
148
  mergedManifest: mergedManifest,
149
- mergedManifestFilePath: browserManifest.filename
149
+ mergedManifestFilePath: browserResourceInfo.manifest.filename
150
150
  };
151
151
  }
152
- function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
153
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
152
+ function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
153
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
154
154
  external_fs_extra_default().writeFileSync(external_path_default().resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
155
155
  external_fs_extra_default().writeFileSync(external_path_default().resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
156
156
  }
@@ -160,6 +160,7 @@ const resolve = ssr_require.resolve;
160
160
  const SSR_DIR = 'ssr';
161
161
  const SSR_ENV_NAME = 'mf-ssr';
162
162
  function setSSREnv() {
163
+ process.env['MF_DISABLE_EMIT_STATS'] = 'true';
163
164
  process.env['MF_SSR_PRJ'] = 'true';
164
165
  }
165
166
  const isDev = ()=>'development' === process.env['NODE_ENV'];
@@ -322,52 +323,12 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
322
323
  options: {
323
324
  nodePlugin: void 0,
324
325
  browserPlugin: void 0,
325
- rspressSSGPlugin: void 0,
326
- distOutputDir: void 0,
327
- browserEnvironmentName: void 0,
328
- nodeEnvironmentName: void 0
326
+ distOutputDir: void 0
329
327
  },
330
- assetResources: {},
331
328
  isSSRConfig,
332
329
  isRspressSSGConfig
333
330
  };
334
331
  api.expose(RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, generateMergedStatsAndManifestOptions);
335
- const defaultBrowserEnvironmentName = environment;
336
- const assetFileNames = (0, sdk_namespaceObject.getManifestFileName)(moduleFederationOptions.manifest);
337
- if (false !== moduleFederationOptions.manifest) api.processAssets({
338
- stage: 'report'
339
- }, ({ assets, environment: envContext })=>{
340
- const expectedBrowserEnv = generateMergedStatsAndManifestOptions.options.browserEnvironmentName ?? defaultBrowserEnvironmentName;
341
- const expectedNodeEnv = generateMergedStatsAndManifestOptions.options.nodeEnvironmentName ?? SSR_ENV_NAME;
342
- const envName = envContext.name;
343
- if (envName !== expectedBrowserEnv && envName !== expectedNodeEnv) return;
344
- const assetResources = generateMergedStatsAndManifestOptions.assetResources;
345
- const targetResources = assetResources[envName] || (assetResources[envName] = {});
346
- const statsAsset = assets[assetFileNames.statsFileName];
347
- if (statsAsset) try {
348
- const raw = statsAsset.source();
349
- const content = 'string' == typeof raw ? raw : raw.toString();
350
- targetResources.stats = {
351
- data: JSON.parse(content),
352
- filename: assetFileNames.statsFileName
353
- };
354
- } catch (err) {
355
- const message = err instanceof Error ? err.message : String(err);
356
- src_logger.error(`Failed to parse stats asset "${assetFileNames.statsFileName}" for environment "${envName}": ${message}`);
357
- }
358
- const manifestAsset = assets[assetFileNames.manifestFileName];
359
- if (manifestAsset) try {
360
- const raw = manifestAsset.source();
361
- const content = 'string' == typeof raw ? raw : raw.toString();
362
- targetResources.manifest = {
363
- data: JSON.parse(content),
364
- filename: assetFileNames.manifestFileName
365
- };
366
- } catch (err) {
367
- const message = err instanceof Error ? err.message : String(err);
368
- src_logger.error(`Failed to parse manifest asset "${assetFileNames.manifestFileName}" for environment "${envName}": ${message}`);
369
- }
370
- });
371
332
  api.onBeforeCreateCompiler(({ bundlerConfigs })=>{
372
333
  if (!bundlerConfigs) throw new Error('Can not get bundlerConfigs!');
373
334
  bundlerConfigs.forEach((bundlerConfig)=>{
@@ -418,7 +379,6 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
418
379
  var _bundlerConfig_output2;
419
380
  if (isSSRConfig(bundlerConfig.name)) {
420
381
  generateMergedStatsAndManifestOptions.options.nodePlugin = new rspack_namespaceObject.ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions));
421
- generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME;
422
382
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin);
423
383
  return;
424
384
  }
@@ -439,24 +399,15 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
439
399
  }
440
400
  generateMergedStatsAndManifestOptions.options.browserPlugin = new rspack_namespaceObject.ModuleFederationPlugin(moduleFederationOptions);
441
401
  generateMergedStatsAndManifestOptions.options.distOutputDir = (null == (_bundlerConfig_output2 = bundlerConfig.output) ? void 0 : _bundlerConfig_output2.path) || '';
442
- generateMergedStatsAndManifestOptions.options.browserEnvironmentName = bundlerConfig.name || defaultBrowserEnvironmentName;
443
402
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.browserPlugin);
444
403
  }
445
404
  }
446
405
  });
447
406
  });
448
407
  const generateMergedStatsAndManifest = ()=>{
449
- const { distOutputDir, browserEnvironmentName, nodeEnvironmentName } = generateMergedStatsAndManifestOptions.options;
450
- if (!distOutputDir || !browserEnvironmentName || !nodeEnvironmentName) return;
451
- const assetResources = generateMergedStatsAndManifestOptions.assetResources;
452
- const browserAssets = assetResources[browserEnvironmentName];
453
- const nodeAssets = assetResources[nodeEnvironmentName];
454
- if (!browserAssets || !nodeAssets) return;
455
- try {
456
- updateStatsAndManifest(nodeAssets, browserAssets, distOutputDir);
457
- } catch (err) {
458
- src_logger.error(err);
459
- }
408
+ const { nodePlugin, browserPlugin, distOutputDir } = generateMergedStatsAndManifestOptions.options;
409
+ if (!nodePlugin || !browserPlugin || !distOutputDir) return;
410
+ updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
460
411
  };
461
412
  api.onDevCompileDone(()=>{
462
413
  generateMergedStatsAndManifest();
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { parseOptions } from "@module-federation/enhanced";
2
2
  import { ModuleFederationPlugin, PLUGIN_NAME } from "@module-federation/enhanced/rspack";
3
- import { TEMP_DIR, createLogger, createModuleFederationConfig, encodeName, getManifestFileName, isRequiredVersion } from "@module-federation/sdk";
3
+ import { TEMP_DIR, createLogger, createModuleFederationConfig, encodeName, isRequiredVersion } from "@module-federation/sdk";
4
4
  import util from "util";
5
5
  import fs_extra from "fs-extra";
6
6
  import path from "path";
@@ -89,21 +89,21 @@ function mergeManifest(browserManifest, nodeManifest) {
89
89
  if ('publicPath' in browserManifest.metaData) browserManifest.metaData.ssrPublicPath = nodeManifest.metaData.publicPath;
90
90
  return browserManifest;
91
91
  }
92
- function mergeStatsAndManifest(nodeAssets, browserAssets) {
93
- const { stats: browserStats, manifest: browserManifest } = browserAssets;
94
- const { stats: nodeStats, manifest: nodeManifest } = nodeAssets;
95
- if (!browserStats || !nodeStats || !browserManifest || !nodeManifest) throw new Error('Failed to read stats or manifest assets for merge');
96
- const mergedStats = mergeStats(browserStats.data, nodeStats.data);
97
- const mergedManifest = mergeManifest(browserManifest.data, nodeManifest.data);
92
+ function mergeStatsAndManifest(nodePlugin, browserPlugin) {
93
+ const nodeResourceInfo = nodePlugin.statsResourceInfo;
94
+ const browserResourceInfo = browserPlugin.statsResourceInfo;
95
+ if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) throw new Error('can not get browserResourceInfo or nodeResourceInfo');
96
+ const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
97
+ const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
98
98
  return {
99
99
  mergedStats: mergedStats,
100
- mergedStatsFilePath: browserStats.filename,
100
+ mergedStatsFilePath: browserResourceInfo.stats.filename,
101
101
  mergedManifest: mergedManifest,
102
- mergedManifestFilePath: browserManifest.filename
102
+ mergedManifestFilePath: browserResourceInfo.manifest.filename
103
103
  };
104
104
  }
105
- function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
106
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
105
+ function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
106
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
107
107
  fs_extra.writeFileSync(path.resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
108
108
  fs_extra.writeFileSync(path.resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
109
109
  }
@@ -112,6 +112,7 @@ const resolve = ssr_require.resolve;
112
112
  const SSR_DIR = 'ssr';
113
113
  const SSR_ENV_NAME = 'mf-ssr';
114
114
  function setSSREnv() {
115
+ process.env['MF_DISABLE_EMIT_STATS'] = 'true';
115
116
  process.env['MF_SSR_PRJ'] = 'true';
116
117
  }
117
118
  const isDev = ()=>'development' === process.env['NODE_ENV'];
@@ -274,52 +275,12 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
274
275
  options: {
275
276
  nodePlugin: void 0,
276
277
  browserPlugin: void 0,
277
- rspressSSGPlugin: void 0,
278
- distOutputDir: void 0,
279
- browserEnvironmentName: void 0,
280
- nodeEnvironmentName: void 0
278
+ distOutputDir: void 0
281
279
  },
282
- assetResources: {},
283
280
  isSSRConfig,
284
281
  isRspressSSGConfig
285
282
  };
286
283
  api.expose(RSBUILD_PLUGIN_MODULE_FEDERATION_NAME, generateMergedStatsAndManifestOptions);
287
- const defaultBrowserEnvironmentName = environment;
288
- const assetFileNames = getManifestFileName(moduleFederationOptions.manifest);
289
- if (false !== moduleFederationOptions.manifest) api.processAssets({
290
- stage: 'report'
291
- }, ({ assets, environment: envContext })=>{
292
- const expectedBrowserEnv = generateMergedStatsAndManifestOptions.options.browserEnvironmentName ?? defaultBrowserEnvironmentName;
293
- const expectedNodeEnv = generateMergedStatsAndManifestOptions.options.nodeEnvironmentName ?? SSR_ENV_NAME;
294
- const envName = envContext.name;
295
- if (envName !== expectedBrowserEnv && envName !== expectedNodeEnv) return;
296
- const assetResources = generateMergedStatsAndManifestOptions.assetResources;
297
- const targetResources = assetResources[envName] || (assetResources[envName] = {});
298
- const statsAsset = assets[assetFileNames.statsFileName];
299
- if (statsAsset) try {
300
- const raw = statsAsset.source();
301
- const content = 'string' == typeof raw ? raw : raw.toString();
302
- targetResources.stats = {
303
- data: JSON.parse(content),
304
- filename: assetFileNames.statsFileName
305
- };
306
- } catch (err) {
307
- const message = err instanceof Error ? err.message : String(err);
308
- src_logger.error(`Failed to parse stats asset "${assetFileNames.statsFileName}" for environment "${envName}": ${message}`);
309
- }
310
- const manifestAsset = assets[assetFileNames.manifestFileName];
311
- if (manifestAsset) try {
312
- const raw = manifestAsset.source();
313
- const content = 'string' == typeof raw ? raw : raw.toString();
314
- targetResources.manifest = {
315
- data: JSON.parse(content),
316
- filename: assetFileNames.manifestFileName
317
- };
318
- } catch (err) {
319
- const message = err instanceof Error ? err.message : String(err);
320
- src_logger.error(`Failed to parse manifest asset "${assetFileNames.manifestFileName}" for environment "${envName}": ${message}`);
321
- }
322
- });
323
284
  api.onBeforeCreateCompiler(({ bundlerConfigs })=>{
324
285
  if (!bundlerConfigs) throw new Error('Can not get bundlerConfigs!');
325
286
  bundlerConfigs.forEach((bundlerConfig)=>{
@@ -370,7 +331,6 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
370
331
  var _bundlerConfig_output2;
371
332
  if (isSSRConfig(bundlerConfig.name)) {
372
333
  generateMergedStatsAndManifestOptions.options.nodePlugin = new ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions));
373
- generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME;
374
334
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin);
375
335
  return;
376
336
  }
@@ -391,24 +351,15 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
391
351
  }
392
352
  generateMergedStatsAndManifestOptions.options.browserPlugin = new ModuleFederationPlugin(moduleFederationOptions);
393
353
  generateMergedStatsAndManifestOptions.options.distOutputDir = (null == (_bundlerConfig_output2 = bundlerConfig.output) ? void 0 : _bundlerConfig_output2.path) || '';
394
- generateMergedStatsAndManifestOptions.options.browserEnvironmentName = bundlerConfig.name || defaultBrowserEnvironmentName;
395
354
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.browserPlugin);
396
355
  }
397
356
  }
398
357
  });
399
358
  });
400
359
  const generateMergedStatsAndManifest = ()=>{
401
- const { distOutputDir, browserEnvironmentName, nodeEnvironmentName } = generateMergedStatsAndManifestOptions.options;
402
- if (!distOutputDir || !browserEnvironmentName || !nodeEnvironmentName) return;
403
- const assetResources = generateMergedStatsAndManifestOptions.assetResources;
404
- const browserAssets = assetResources[browserEnvironmentName];
405
- const nodeAssets = assetResources[nodeEnvironmentName];
406
- if (!browserAssets || !nodeAssets) return;
407
- try {
408
- updateStatsAndManifest(nodeAssets, browserAssets, distOutputDir);
409
- } catch (err) {
410
- src_logger.error(err);
411
- }
360
+ const { nodePlugin, browserPlugin, distOutputDir } = generateMergedStatsAndManifestOptions.options;
361
+ if (!nodePlugin || !browserPlugin || !distOutputDir) return;
362
+ updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
412
363
  };
413
364
  api.onDevCompileDone(()=>{
414
365
  generateMergedStatsAndManifest();
@@ -3,5 +3,4 @@ export { DEFAULT_ASSET_PREFIX } from '../constant';
3
3
  export { autoDeleteSplitChunkCacheGroups } from './autoDeleteSplitChunkCacheGroups';
4
4
  export { addDataFetchExposes } from './addDataFetchExposes';
5
5
  export { updateStatsAndManifest } from './manifest';
6
- export type { StatsAssetResource } from './manifest';
7
6
  export { patchSSRRspackConfig, createSSRREnvConfig, createSSRMFConfig, setSSREnv, SSR_DIR, SSR_ENV_NAME, } from './ssr';
@@ -1,11 +1,5 @@
1
- import { Stats, Manifest } from '@module-federation/sdk';
2
- type AssetResource<T> = {
3
- data: T;
4
- filename: string;
5
- };
6
- export type StatsAssetResource = {
7
- stats?: AssetResource<Stats>;
8
- manifest?: AssetResource<Manifest>;
9
- };
10
- export declare function updateStatsAndManifest(nodeAssets: StatsAssetResource, browserAssets: StatsAssetResource, outputDir: string): void;
1
+ import type { ModuleFederationPlugin as WebpackModuleFederationPlugin } from '@module-federation/enhanced';
2
+ import type { ModuleFederationPlugin as RspackModuleFederationPlugin } from '@module-federation/enhanced/rspack';
3
+ type BundlerPlugin = WebpackModuleFederationPlugin | RspackModuleFederationPlugin;
4
+ export declare function updateStatsAndManifest(nodePlugin: BundlerPlugin, browserPlugin: BundlerPlugin, outputDir: string): void;
11
5
  export {};
@@ -41,6 +41,7 @@ export declare function createSSRMFConfig(mfConfig: moduleFederationPlugin.Modul
41
41
  };
42
42
  };
43
43
  bridge?: {
44
+ enableBridgeRouter?: boolean;
44
45
  disableAlias?: boolean;
45
46
  };
46
47
  async?: boolean | moduleFederationPlugin.AsyncBoundaryOptions;
package/dist/utils.js CHANGED
@@ -50,11 +50,6 @@ __webpack_require__.d(__webpack_exports__, {
50
50
  });
51
51
  const external_util_namespaceObject = require("util");
52
52
  var external_util_default = /*#__PURE__*/ __webpack_require__.n(external_util_namespaceObject);
53
- const DATA_FETCH_CLIENT_SUFFIX = '.client';
54
- const CALL_NAME_MAP = {
55
- RSPRESS: 'rspress',
56
- RSLIB: 'rslib'
57
- };
58
53
  const SPLIT_CHUNK_MAP = {
59
54
  REACT: 'react',
60
55
  ROUTER: 'router',
@@ -94,6 +89,11 @@ var external_fs_extra_default = /*#__PURE__*/ __webpack_require__.n(external_fs_
94
89
  const external_path_namespaceObject = require("path");
95
90
  var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
96
91
  const sdk_namespaceObject = require("@module-federation/sdk");
92
+ const DATA_FETCH_CLIENT_SUFFIX = '.client';
93
+ const CALL_NAME_MAP = {
94
+ RSPRESS: 'rspress',
95
+ RSLIB: 'rslib'
96
+ };
97
97
  const addDataFetchExpose = (exposes, key, filepath, suffix = '')=>{
98
98
  if (!external_fs_extra_default().existsSync(filepath)) return false;
99
99
  const dataFetchKey = '.' === key ? `./data${suffix}` : `${key}.data${suffix}`;
@@ -136,21 +136,21 @@ function mergeManifest(browserManifest, nodeManifest) {
136
136
  if ('publicPath' in browserManifest.metaData) browserManifest.metaData.ssrPublicPath = nodeManifest.metaData.publicPath;
137
137
  return browserManifest;
138
138
  }
139
- function mergeStatsAndManifest(nodeAssets, browserAssets) {
140
- const { stats: browserStats, manifest: browserManifest } = browserAssets;
141
- const { stats: nodeStats, manifest: nodeManifest } = nodeAssets;
142
- if (!browserStats || !nodeStats || !browserManifest || !nodeManifest) throw new Error('Failed to read stats or manifest assets for merge');
143
- const mergedStats = mergeStats(browserStats.data, nodeStats.data);
144
- const mergedManifest = mergeManifest(browserManifest.data, nodeManifest.data);
139
+ function mergeStatsAndManifest(nodePlugin, browserPlugin) {
140
+ const nodeResourceInfo = nodePlugin.statsResourceInfo;
141
+ const browserResourceInfo = browserPlugin.statsResourceInfo;
142
+ if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) throw new Error('can not get browserResourceInfo or nodeResourceInfo');
143
+ const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
144
+ const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
145
145
  return {
146
146
  mergedStats: mergedStats,
147
- mergedStatsFilePath: browserStats.filename,
147
+ mergedStatsFilePath: browserResourceInfo.stats.filename,
148
148
  mergedManifest: mergedManifest,
149
- mergedManifestFilePath: browserManifest.filename
149
+ mergedManifestFilePath: browserResourceInfo.manifest.filename
150
150
  };
151
151
  }
152
- function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
153
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
152
+ function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
153
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
154
154
  external_fs_extra_default().writeFileSync(external_path_default().resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
155
155
  external_fs_extra_default().writeFileSync(external_path_default().resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
156
156
  }
@@ -160,6 +160,7 @@ const resolve = ssr_require.resolve;
160
160
  const SSR_DIR = 'ssr';
161
161
  const SSR_ENV_NAME = 'mf-ssr';
162
162
  function setSSREnv() {
163
+ process.env['MF_DISABLE_EMIT_STATS'] = 'true';
163
164
  process.env['MF_SSR_PRJ'] = 'true';
164
165
  }
165
166
  const isDev = ()=>'development' === process.env['NODE_ENV'];
package/dist/utils.mjs CHANGED
@@ -84,21 +84,21 @@ function mergeManifest(browserManifest, nodeManifest) {
84
84
  if ('publicPath' in browserManifest.metaData) browserManifest.metaData.ssrPublicPath = nodeManifest.metaData.publicPath;
85
85
  return browserManifest;
86
86
  }
87
- function mergeStatsAndManifest(nodeAssets, browserAssets) {
88
- const { stats: browserStats, manifest: browserManifest } = browserAssets;
89
- const { stats: nodeStats, manifest: nodeManifest } = nodeAssets;
90
- if (!browserStats || !nodeStats || !browserManifest || !nodeManifest) throw new Error('Failed to read stats or manifest assets for merge');
91
- const mergedStats = mergeStats(browserStats.data, nodeStats.data);
92
- const mergedManifest = mergeManifest(browserManifest.data, nodeManifest.data);
87
+ function mergeStatsAndManifest(nodePlugin, browserPlugin) {
88
+ const nodeResourceInfo = nodePlugin.statsResourceInfo;
89
+ const browserResourceInfo = browserPlugin.statsResourceInfo;
90
+ if (!browserResourceInfo || !nodeResourceInfo || !browserResourceInfo.stats || !nodeResourceInfo.stats || !browserResourceInfo.manifest || !nodeResourceInfo.manifest) throw new Error('can not get browserResourceInfo or nodeResourceInfo');
91
+ const mergedStats = mergeStats(browserResourceInfo.stats.stats, nodeResourceInfo.stats.stats);
92
+ const mergedManifest = mergeManifest(browserResourceInfo.manifest.manifest, nodeResourceInfo.manifest.manifest);
93
93
  return {
94
94
  mergedStats: mergedStats,
95
- mergedStatsFilePath: browserStats.filename,
95
+ mergedStatsFilePath: browserResourceInfo.stats.filename,
96
96
  mergedManifest: mergedManifest,
97
- mergedManifestFilePath: browserManifest.filename
97
+ mergedManifestFilePath: browserResourceInfo.manifest.filename
98
98
  };
99
99
  }
100
- function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
101
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
100
+ function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
101
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
102
102
  fs_extra.writeFileSync(path.resolve(outputDir, mergedStatsFilePath), JSON.stringify(mergedStats, null, 2));
103
103
  fs_extra.writeFileSync(path.resolve(outputDir, mergedManifestFilePath), JSON.stringify(mergedManifest, null, 2));
104
104
  }
@@ -107,6 +107,7 @@ const resolve = ssr_require.resolve;
107
107
  const SSR_DIR = 'ssr';
108
108
  const SSR_ENV_NAME = 'mf-ssr';
109
109
  function setSSREnv() {
110
+ process.env['MF_DISABLE_EMIT_STATS'] = 'true';
110
111
  process.env['MF_SSR_PRJ'] = 'true';
111
112
  }
112
113
  const isDev = ()=>'development' === process.env['NODE_ENV'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@module-federation/rsbuild-plugin",
3
- "version": "0.0.0-refactor-manifest-20251016072532",
3
+ "version": "0.0.0-research-issue-4085-20251016232757",
4
4
  "description": "Module Federation plugin for Rsbuild",
5
5
  "homepage": "https://module-federation.io",
6
6
  "bugs": {
@@ -50,9 +50,9 @@
50
50
  ],
51
51
  "dependencies": {
52
52
  "fs-extra": "11.3.0",
53
- "@module-federation/enhanced": "0.0.0-refactor-manifest-20251016072532",
54
- "@module-federation/sdk": "0.0.0-refactor-manifest-20251016072532",
55
- "@module-federation/node": "0.0.0-refactor-manifest-20251016072532"
53
+ "@module-federation/sdk": "0.0.0-research-issue-4085-20251016232757",
54
+ "@module-federation/enhanced": "0.0.0-research-issue-4085-20251016232757",
55
+ "@module-federation/node": "0.0.0-research-issue-4085-20251016232757"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@rslib/core": "^0.12.4",