/
update-project-config.ts
91 lines (83 loc) · 2.77 KB
/
update-project-config.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import type { Tree } from '@nrwl/devkit';
import {
joinPathFragments,
readProjectConfiguration,
readWorkspaceConfiguration,
updateProjectConfiguration,
updateWorkspaceConfiguration,
} from '@nrwl/devkit';
import type { Schema } from '../schema';
export function updateProjectConfig(tree: Tree, schema: Schema) {
let projectConfig = readProjectConfiguration(tree, schema.project);
projectConfig.targets.build.options.outputPath = `dist/apps/${schema.project}/browser`;
const buildTargetFileReplacements =
projectConfig.targets.build.configurations?.production?.fileReplacements;
projectConfig.targets.server = {
dependsOn: ['build'],
executor: '@angular-devkit/build-angular:server',
options: {
outputPath: `dist/${projectConfig.root}/server`,
main: joinPathFragments(projectConfig.root, schema.serverFileName),
tsConfig: joinPathFragments(projectConfig.root, 'tsconfig.server.json'),
},
configurations: {
production: {
outputHashing: 'media',
...(buildTargetFileReplacements
? { fileReplacements: buildTargetFileReplacements }
: {}),
},
development: {
optimization: false,
sourceMap: true,
extractLicenses: false,
},
},
defaultConfiguration: 'production',
};
projectConfig.targets['serve-ssr'] = {
executor: '@nguniversal/builders:ssr-dev-server',
configurations: {
development: {
browserTarget: `${schema.project}:build:development`,
serverTarget: `${schema.project}:server:development`,
},
production: {
browserTarget: `${schema.project}:build:production`,
serverTarget: `${schema.project}:server:production`,
},
},
defaultConfiguration: 'development',
};
projectConfig.targets.prerender = {
executor: '@nguniversal/builders:prerender',
options: {
routes: ['/'],
},
configurations: {
development: {
browserTarget: `${schema.project}:build:development`,
serverTarget: `${schema.project}:server:development`,
},
production: {
browserTarget: `${schema.project}:build:production`,
serverTarget: `${schema.project}:server:production`,
},
},
defaultConfiguration: 'production',
};
updateProjectConfiguration(tree, schema.project, projectConfig);
const workspaceConfig = readWorkspaceConfiguration(tree);
if (
workspaceConfig.tasksRunnerOptions?.default &&
!workspaceConfig.tasksRunnerOptions.default.options.cacheableOperations[
'server'
]
) {
workspaceConfig.tasksRunnerOptions.default.options.cacheableOperations = [
...workspaceConfig.tasksRunnerOptions.default.options.cacheableOperations,
'server',
];
updateWorkspaceConfiguration(tree, workspaceConfig);
}
}