Skip to content

Commit a94c826

Browse files
beemanalexeagle
authored andcommitted
feat(@schematics/angular): let Universal schematic use configurations from build architect
1 parent 01beb52 commit a94c826

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

packages/schematics/angular/universal/index.ts

+20
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,16 @@ function getClientTargets(
6868
return projectTargets;
6969
}
7070

71+
// TODO: Add types for the Target
72+
// tslint:disable-next-line:no-any
73+
function getFileReplacements(target: any ) {
74+
const configurations = target.configurations || {};
75+
const production = configurations.production || {};
76+
const fileReplacements = production.fileReplacements || [];
77+
78+
return fileReplacements;
79+
}
80+
7181
function updateConfigFile(options: UniversalOptions, tsConfigDirectory: Path): Rule {
7282
return (host: Tree) => {
7383
const workspace = getWorkspace(host);
@@ -83,9 +93,19 @@ function updateConfigFile(options: UniversalOptions, tsConfigDirectory: Path): R
8393
main: `${clientProject.root}src/main.server.ts`,
8494
tsConfig: join(tsConfigDirectory, `${options.tsconfigFileName}.json`),
8595
};
96+
97+
// TODO: Add types for the TargetConfiguration
98+
// tslint:disable-next-line:no-any
99+
const builderConfigurations: any = {
100+
production: {
101+
fileReplacements: getFileReplacements(projectTargets.build),
102+
},
103+
};
104+
86105
const serverTarget: JsonObject = {
87106
builder: '@angular-devkit/build-angular:server',
88107
options: builderOptions,
108+
configurations: builderConfigurations,
89109
};
90110
projectTargets.server = serverTarget;
91111

packages/schematics/angular/universal/index_spec.ts

+7
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,13 @@ describe('Universal Schematic', () => {
130130
expect(opts.outputPath).toEqual('dist/bar-server');
131131
expect(opts.main).toEqual('projects/bar/src/main.server.ts');
132132
expect(opts.tsConfig).toEqual('projects/bar/tsconfig.server.json');
133+
const configurations = targets.server.configurations;
134+
expect(configurations.production).toBeDefined();
135+
expect(configurations.production.fileReplacements).toBeDefined();
136+
const fileReplacements = targets.server.configurations.production.fileReplacements;
137+
expect(fileReplacements.length).toEqual(1);
138+
expect(fileReplacements[0].replace).toEqual('projects/bar/src/environments/environment.ts');
139+
expect(fileReplacements[0].with).toEqual('projects/bar/src/environments/environment.prod.ts');
133140
});
134141

135142
it('should add a server transition to BrowerModule import', () => {

0 commit comments

Comments
 (0)