Skip to content

Commit 4a2cf82

Browse files
authoredDec 26, 2024··
fix(manifest): add default exposes fields if enable disableAssetsAnalyze (#3396)
1 parent c90bba2 commit 4a2cf82

File tree

3 files changed

+56
-21
lines changed

3 files changed

+56
-21
lines changed
 

Diff for: ‎.changeset/metal-bags-admire.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@module-federation/manifest': patch
3+
---
4+
5+
fix(manifest): add default exposes fields if set disableAssetsAnalyze: true

Diff for: ‎packages/manifest/src/ModuleHandler.ts

+36-19
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,37 @@ type ShareMap = { [sharedKey: string]: StatsShared };
1414
type ExposeMap = { [exposeImportValue: string]: StatsExpose };
1515
type RemotesConsumerMap = { [remoteKey: string]: StatsRemote };
1616

17+
export function getExposeItem({
18+
exposeKey,
19+
name,
20+
file,
21+
}: {
22+
exposeKey: string;
23+
name: string;
24+
file: { import: string[] };
25+
}): StatsExpose {
26+
const exposeModuleName = exposeKey.replace('./', '');
27+
28+
return {
29+
path: exposeKey,
30+
id: `${name}:${exposeModuleName}`,
31+
name: exposeModuleName,
32+
// @ts-ignore to deduplicate
33+
requires: new Set(),
34+
file: path.relative(process.cwd(), file.import[0]),
35+
assets: {
36+
js: {
37+
async: [],
38+
sync: [],
39+
},
40+
css: {
41+
async: [],
42+
sync: [],
43+
},
44+
},
45+
};
46+
}
47+
1748
class ModuleHandler {
1849
private _options: moduleFederationPlugin.ModuleFederationPluginOptions;
1950
private _bundler: 'webpack' | 'rspack' = 'webpack';
@@ -258,26 +289,12 @@ class ModuleHandler {
258289
const data = identifier.split(' ');
259290

260291
JSON.parse(data[3]).forEach(([prefixedName, file]) => {
261-
const exposeModuleName = prefixedName.replace('./', '');
262292
// TODO: support multiple import
263-
exposesMap[getFileNameWithOutExt(file.import[0])] = {
264-
path: prefixedName,
265-
id: `${this._options.name}:${exposeModuleName}`,
266-
name: exposeModuleName,
267-
// @ts-ignore to deduplicate
268-
requires: new Set(),
269-
file: path.relative(process.cwd(), file.import[0]),
270-
assets: {
271-
js: {
272-
async: [],
273-
sync: [],
274-
},
275-
css: {
276-
async: [],
277-
sync: [],
278-
},
279-
},
280-
};
293+
exposesMap[getFileNameWithOutExt(file.import[0])] = getExposeItem({
294+
exposeKey: prefixedName,
295+
name: this._options.name!,
296+
file,
297+
});
281298
});
282299
}
283300

Diff for: ‎packages/manifest/src/StatsManager.ts

+15-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import {
4242
utils,
4343
} from '@module-federation/managers';
4444
import { HOT_UPDATE_SUFFIX, PLUGIN_IDENTIFIER } from './constants';
45-
import { ModuleHandler } from './ModuleHandler';
45+
import { ModuleHandler, getExposeItem } from './ModuleHandler';
4646
import { StatsInfo } from './types';
4747

4848
class StatsManager {
@@ -300,7 +300,11 @@ class StatsManager {
300300
extraOptions?: {},
301301
): Promise<Stats> {
302302
try {
303-
const { name, manifest: manifestOptions = {} } = this._options;
303+
const {
304+
name,
305+
manifest: manifestOptions = {},
306+
exposes = {},
307+
} = this._options;
304308

305309
const metaData = this._getMetaData(compiler, compilation, extraOptions);
306310

@@ -320,6 +324,15 @@ class StatsManager {
320324
const remotes: StatsRemote[] =
321325
this._remoteManager.statsRemoteWithEmptyUsedIn;
322326
stats.remotes = remotes;
327+
stats.exposes = Object.keys(exposes).map((exposeKey) => {
328+
return getExposeItem({
329+
exposeKey,
330+
name: name!,
331+
file: {
332+
import: exposes[exposeKey].import,
333+
},
334+
});
335+
});
323336
return stats;
324337
}
325338

0 commit comments

Comments
 (0)
Please sign in to comment.