/
add-ssr.ts
66 lines (56 loc) · 1.58 KB
/
add-ssr.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import type { Tree } from '@nrwl/devkit';
import {
addDependenciesToPackageJson,
generateFiles,
joinPathFragments,
readProjectConfiguration,
updateProjectConfiguration,
} from '@nrwl/devkit';
import setupSsr from '../../setup-ssr/setup-ssr';
import {
corsVersion,
expressVersion,
moduleFederationNodeVersion,
} from '../../../utils/versions';
export async function addSsr(
tree: Tree,
{ appName, port }: { appName: string; port: number }
) {
let project = readProjectConfiguration(tree, appName);
await setupSsr(tree, {
project: appName,
});
tree.rename(
joinPathFragments(project.sourceRoot, 'main.server.ts'),
joinPathFragments(project.sourceRoot, 'bootstrap.server.ts')
);
tree.write(
joinPathFragments(project.root, 'server.ts'),
"import('./src/main.server');"
);
generateFiles(tree, joinPathFragments(__dirname, '../files'), project.root, {
appName,
tmpl: '',
});
// update project.json
project = readProjectConfiguration(tree, appName);
project.targets.server.executor = '@nrwl/angular:webpack-server';
project.targets.server.options.customWebpackConfig = {
path: joinPathFragments(project.root, 'webpack.server.config.js'),
};
project.targets['serve-ssr'].options = {
...(project.targets['serve-ssr'].options ?? {}),
port,
};
updateProjectConfiguration(tree, appName, project);
const installTask = addDependenciesToPackageJson(
tree,
{
cors: corsVersion,
express: expressVersion,
'@module-federation/node': moduleFederationNodeVersion,
},
{}
);
return installTask;
}