/
add-mfe-files.ts
42 lines (38 loc) · 1.01 KB
/
add-mfe-files.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { NormalizedSchema } from '../schema';
import { generateFiles, names } from '@nrwl/devkit';
import { join } from 'path';
export function addMfeFiles(
host,
options: NormalizedSchema,
defaultRemoteManifest: { name: string; port: number }[]
) {
const templateVariables = {
...names(options.name),
...options,
tmpl: '',
remotes: defaultRemoteManifest.map(({ name, port }) => ({
...names(name),
port,
})),
};
// Module federation requires bootstrap code to be dynamically imported.
// Renaming original entry file so we can use `import(./bootstrap)` in
// new entry file.
host.rename(
join(options.appProjectRoot, 'src/main.tsx'),
join(options.appProjectRoot, 'src/bootstrap.tsx')
);
// New entry file is created here.
generateFiles(
host,
join(__dirname, `../files/mfe`),
options.appProjectRoot,
templateVariables
);
generateFiles(
host,
join(__dirname, `../files/common`),
options.appProjectRoot,
templateVariables
);
}