Skip to content

Commit 2b5c689

Browse files
committed
feat(mf): fall back to original-serve to infer port for rsbuild
1 parent 7cc389f commit 2b5c689

File tree

5 files changed

+22
-14
lines changed

5 files changed

+22
-14
lines changed

libs/mf/src/rspack/with-federation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export type FederationOptions = Omit<
1717
};
1818

1919
export function withFederation(config: FederationConfig) {
20-
//
20+
//
2121
// This provides partial application for better DX,
2222
// as it allows to split the config into a file with
2323
// rsbuild and an other one with federation settings

libs/mf/src/schematics/init-rspack/schematic.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export function init(options: MfSchematicSchema): Rule {
7979
generteManifest(tree, manifestPath, remoteMap);
8080
}
8181

82-
updateProjectConfig(projectConfig);
82+
updateProjectConfig(projectConfig, parseInt(options.port));
8383

8484
updateTsConfig(tree, tsConfigName);
8585

@@ -338,7 +338,7 @@ function updateLocalTsConfig(projectRoot: string, tree) {
338338
}
339339
}
340340

341-
function updateProjectConfig(projectConfig: ProjectConfig) {
341+
function updateProjectConfig(projectConfig: ProjectConfig, port: number) {
342342
if (projectConfig?.architect?.build) {
343343
projectConfig.architect['original-build'] = projectConfig.architect.build;
344344
delete projectConfig.architect.build;
@@ -347,6 +347,12 @@ function updateProjectConfig(projectConfig: ProjectConfig) {
347347
if (projectConfig?.architect?.serve) {
348348
projectConfig.architect['original-serve'] = projectConfig.architect.serve;
349349
delete projectConfig.architect.serve;
350+
351+
const target = projectConfig.architect['original-serve'];
352+
target.options = {
353+
...target.options,
354+
port: port || 4200
355+
};
350356
}
351357
}
352358

@@ -388,10 +394,12 @@ function generateRemoteMap(workspace: WorkspaceConfig, projectName: string) {
388394
if (
389395
p !== projectName &&
390396
projectType === 'application' &&
391-
project?.architect?.serve &&
392-
project?.architect?.build
397+
(project?.architect?.serve || project?.architect?.['original-serve']) &&
398+
(project?.architect?.build || project?.architect?.['original-build'])
393399
) {
394-
const pPort = project.architect.serve.options?.port ?? 4200;
400+
const pPort = project.architect.serve?.options?.port
401+
?? project.architect['original-serve']?.options?.port
402+
?? 4200;
395403
result[strings.camelize(p)] = `http://localhost:${pPort}/remoteEntry.js`;
396404
}
397405
}

libs/mf/src/schematics/init/schema.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ export interface InitSchema {
33
port: string | number;
44
nxBuilders: boolean | undefined;
55
type: 'host' | 'dynamic-host' | 'remote' | 'legacy';
6-
stack: 'webpack' | 'rsbuild' | 'native';
6+
stack: 'module-federation-webpack' | 'module-federation-rsbuild' | 'native-federation-esbuild';
77
}

libs/mf/src/schematics/init/schema.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,22 @@
3333
},
3434
"stack": {
3535
"type": "string",
36-
"enum": ["webpack", "rsbuild", "native"],
36+
"enum": ["module-federation-webpack", "module-federation-rsbuild", "native-federation-esbuild"],
3737
"x-aliases": ["s"],
3838
"x-prompt": {
3939
"message": "Which stack do you want to use?",
4040
"type": "list",
4141
"items": [
4242
{
43-
"value": "webpack",
43+
"value": "module-federation-webpack",
4444
"label": "Module Federation with webpack (classic)"
4545
},
4646
{
47-
"value": "rsbuild",
47+
"value": "module-federation-rsbuild",
4848
"label": "Module Federation with rsbuild (experimental nextgen)"
4949
},
5050
{
51-
"value": "native",
51+
"value": "native-federation-esbuild",
5252
"label": "Native Federation with esbuild (bundler-agnostic)"
5353
}
5454
]

libs/mf/src/schematics/init/schematic.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ export function init(options: InitSchema): Rule {
1616
const { stack, ...delegationOptions } = options;
1717

1818
switch (stack) {
19-
case 'webpack':
19+
case 'module-federation-webpack':
2020
return chain([schematic('init-webpack', delegationOptions)]);
2121

22-
case 'rsbuild':
22+
case 'module-federation-rsbuild':
2323
return chain([schematic('init-rspack', delegationOptions)]);
2424

25-
case 'native':
25+
case 'native-federation-esbuild':
2626
initNativeFederation(context, delegationOptions);
2727
}
2828
return noop();

0 commit comments

Comments
 (0)