@module-federation/rsbuild-plugin 0.21.2 → 0.21.4

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 } from '../utils';
2
+ import { SSR_DIR, StatsAssetResource } 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,7 +14,10 @@ type ExposedAPIType = {
14
14
  browserPlugin?: ModuleFederationPlugin;
15
15
  rspressSSGPlugin?: ModuleFederationPlugin;
16
16
  distOutputDir?: string;
17
+ browserEnvironmentName?: string;
18
+ nodeEnvironmentName?: string;
17
19
  };
20
+ assetResources: Record<string, StatsAssetResource>;
18
21
  isSSRConfig: typeof isSSRConfig;
19
22
  isRspressSSGConfig: typeof isRspressSSGConfig;
20
23
  };
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(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);
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);
145
145
  return {
146
146
  mergedStats: mergedStats,
147
- mergedStatsFilePath: browserResourceInfo.stats.filename,
147
+ mergedStatsFilePath: browserStats.filename,
148
148
  mergedManifest: mergedManifest,
149
- mergedManifestFilePath: browserResourceInfo.manifest.filename
149
+ mergedManifestFilePath: browserManifest.filename
150
150
  };
151
151
  }
152
- function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
153
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
152
+ function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
153
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
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,7 +160,6 @@ 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';
164
163
  process.env['MF_SSR_PRJ'] = 'true';
165
164
  }
166
165
  const isDev = ()=>'development' === process.env['NODE_ENV'];
@@ -323,12 +322,52 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
323
322
  options: {
324
323
  nodePlugin: void 0,
325
324
  browserPlugin: void 0,
326
- distOutputDir: void 0
325
+ rspressSSGPlugin: void 0,
326
+ distOutputDir: void 0,
327
+ browserEnvironmentName: void 0,
328
+ nodeEnvironmentName: void 0
327
329
  },
330
+ assetResources: {},
328
331
  isSSRConfig,
329
332
  isRspressSSGConfig
330
333
  };
331
334
  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
+ });
332
371
  api.onBeforeCreateCompiler(({ bundlerConfigs })=>{
333
372
  if (!bundlerConfigs) throw new Error('Can not get bundlerConfigs!');
334
373
  bundlerConfigs.forEach((bundlerConfig)=>{
@@ -379,6 +418,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
379
418
  var _bundlerConfig_output2;
380
419
  if (isSSRConfig(bundlerConfig.name)) {
381
420
  generateMergedStatsAndManifestOptions.options.nodePlugin = new rspack_namespaceObject.ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions));
421
+ generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME;
382
422
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin);
383
423
  return;
384
424
  }
@@ -399,15 +439,24 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
399
439
  }
400
440
  generateMergedStatsAndManifestOptions.options.browserPlugin = new rspack_namespaceObject.ModuleFederationPlugin(moduleFederationOptions);
401
441
  generateMergedStatsAndManifestOptions.options.distOutputDir = (null == (_bundlerConfig_output2 = bundlerConfig.output) ? void 0 : _bundlerConfig_output2.path) || '';
442
+ generateMergedStatsAndManifestOptions.options.browserEnvironmentName = bundlerConfig.name || defaultBrowserEnvironmentName;
402
443
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.browserPlugin);
403
444
  }
404
445
  }
405
446
  });
406
447
  });
407
448
  const generateMergedStatsAndManifest = ()=>{
408
- const { nodePlugin, browserPlugin, distOutputDir } = generateMergedStatsAndManifestOptions.options;
409
- if (!nodePlugin || !browserPlugin || !distOutputDir) return;
410
- updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
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
+ }
411
460
  };
412
461
  api.onDevCompileDone(()=>{
413
462
  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, isRequiredVersion } from "@module-federation/sdk";
3
+ import { TEMP_DIR, createLogger, createModuleFederationConfig, encodeName, getManifestFileName, 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(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);
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);
98
98
  return {
99
99
  mergedStats: mergedStats,
100
- mergedStatsFilePath: browserResourceInfo.stats.filename,
100
+ mergedStatsFilePath: browserStats.filename,
101
101
  mergedManifest: mergedManifest,
102
- mergedManifestFilePath: browserResourceInfo.manifest.filename
102
+ mergedManifestFilePath: browserManifest.filename
103
103
  };
104
104
  }
105
- function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
106
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
105
+ function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
106
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
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,7 +112,6 @@ 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';
116
115
  process.env['MF_SSR_PRJ'] = 'true';
117
116
  }
118
117
  const isDev = ()=>'development' === process.env['NODE_ENV'];
@@ -275,12 +274,52 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
275
274
  options: {
276
275
  nodePlugin: void 0,
277
276
  browserPlugin: void 0,
278
- distOutputDir: void 0
277
+ rspressSSGPlugin: void 0,
278
+ distOutputDir: void 0,
279
+ browserEnvironmentName: void 0,
280
+ nodeEnvironmentName: void 0
279
281
  },
282
+ assetResources: {},
280
283
  isSSRConfig,
281
284
  isRspressSSGConfig
282
285
  };
283
286
  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
+ });
284
323
  api.onBeforeCreateCompiler(({ bundlerConfigs })=>{
285
324
  if (!bundlerConfigs) throw new Error('Can not get bundlerConfigs!');
286
325
  bundlerConfigs.forEach((bundlerConfig)=>{
@@ -331,6 +370,7 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
331
370
  var _bundlerConfig_output2;
332
371
  if (isSSRConfig(bundlerConfig.name)) {
333
372
  generateMergedStatsAndManifestOptions.options.nodePlugin = new ModuleFederationPlugin(createSSRMFConfig(moduleFederationOptions));
373
+ generateMergedStatsAndManifestOptions.options.nodeEnvironmentName = bundlerConfig.name || SSR_ENV_NAME;
334
374
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.nodePlugin);
335
375
  return;
336
376
  }
@@ -351,15 +391,24 @@ const pluginModuleFederation = (moduleFederationOptions, rsbuildOptions)=>({
351
391
  }
352
392
  generateMergedStatsAndManifestOptions.options.browserPlugin = new ModuleFederationPlugin(moduleFederationOptions);
353
393
  generateMergedStatsAndManifestOptions.options.distOutputDir = (null == (_bundlerConfig_output2 = bundlerConfig.output) ? void 0 : _bundlerConfig_output2.path) || '';
394
+ generateMergedStatsAndManifestOptions.options.browserEnvironmentName = bundlerConfig.name || defaultBrowserEnvironmentName;
354
395
  bundlerConfig.plugins.push(generateMergedStatsAndManifestOptions.options.browserPlugin);
355
396
  }
356
397
  }
357
398
  });
358
399
  });
359
400
  const generateMergedStatsAndManifest = ()=>{
360
- const { nodePlugin, browserPlugin, distOutputDir } = generateMergedStatsAndManifestOptions.options;
361
- if (!nodePlugin || !browserPlugin || !distOutputDir) return;
362
- updateStatsAndManifest(nodePlugin, browserPlugin, distOutputDir);
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
+ }
363
412
  };
364
413
  api.onDevCompileDone(()=>{
365
414
  generateMergedStatsAndManifest();
@@ -3,4 +3,5 @@ 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';
6
7
  export { patchSSRRspackConfig, createSSRREnvConfig, createSSRMFConfig, setSSREnv, SSR_DIR, SSR_ENV_NAME, } from './ssr';
@@ -1,5 +1,11 @@
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;
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;
5
11
  export {};
package/dist/utils.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(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);
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);
145
145
  return {
146
146
  mergedStats: mergedStats,
147
- mergedStatsFilePath: browserResourceInfo.stats.filename,
147
+ mergedStatsFilePath: browserStats.filename,
148
148
  mergedManifest: mergedManifest,
149
- mergedManifestFilePath: browserResourceInfo.manifest.filename
149
+ mergedManifestFilePath: browserManifest.filename
150
150
  };
151
151
  }
152
- function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
153
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
152
+ function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
153
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
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,7 +160,6 @@ 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';
164
163
  process.env['MF_SSR_PRJ'] = 'true';
165
164
  }
166
165
  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(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);
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);
93
93
  return {
94
94
  mergedStats: mergedStats,
95
- mergedStatsFilePath: browserResourceInfo.stats.filename,
95
+ mergedStatsFilePath: browserStats.filename,
96
96
  mergedManifest: mergedManifest,
97
- mergedManifestFilePath: browserResourceInfo.manifest.filename
97
+ mergedManifestFilePath: browserManifest.filename
98
98
  };
99
99
  }
100
- function updateStatsAndManifest(nodePlugin, browserPlugin, outputDir) {
101
- const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodePlugin, browserPlugin);
100
+ function updateStatsAndManifest(nodeAssets, browserAssets, outputDir) {
101
+ const { mergedStats, mergedStatsFilePath, mergedManifest, mergedManifestFilePath } = mergeStatsAndManifest(nodeAssets, browserAssets);
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,7 +107,6 @@ 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';
111
110
  process.env['MF_SSR_PRJ'] = 'true';
112
111
  }
113
112
  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.21.2",
3
+ "version": "0.21.4",
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/node": "2.7.21",
54
- "@module-federation/sdk": "0.21.2",
55
- "@module-federation/enhanced": "0.21.2"
53
+ "@module-federation/sdk": "0.21.4",
54
+ "@module-federation/node": "2.7.23",
55
+ "@module-federation/enhanced": "0.21.4"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@rslib/core": "^0.12.4",