feat(@schematics/angular): let Universal schematic use configurations from build architect

This commit is contained in:
Bram Borggreve 2018-08-21 22:40:12 +02:00 committed by Alex Eagle
parent 01beb520bc
commit a94c826661
2 changed files with 27 additions and 0 deletions

View File

@ -68,6 +68,16 @@ function getClientTargets(
return projectTargets;
}
// TODO: Add types for the Target
// tslint:disable-next-line:no-any
function getFileReplacements(target: any ) {
const configurations = target.configurations || {};
const production = configurations.production || {};
const fileReplacements = production.fileReplacements || [];
return fileReplacements;
}
function updateConfigFile(options: UniversalOptions, tsConfigDirectory: Path): Rule {
return (host: Tree) => {
const workspace = getWorkspace(host);
@ -83,9 +93,19 @@ function updateConfigFile(options: UniversalOptions, tsConfigDirectory: Path): R
main: `${clientProject.root}src/main.server.ts`,
tsConfig: join(tsConfigDirectory, `${options.tsconfigFileName}.json`),
};
// TODO: Add types for the TargetConfiguration
// tslint:disable-next-line:no-any
const builderConfigurations: any = {
production: {
fileReplacements: getFileReplacements(projectTargets.build),
},
};
const serverTarget: JsonObject = {
builder: '@angular-devkit/build-angular:server',
options: builderOptions,
configurations: builderConfigurations,
};
projectTargets.server = serverTarget;

View File

@ -130,6 +130,13 @@ describe('Universal Schematic', () => {
expect(opts.outputPath).toEqual('dist/bar-server');
expect(opts.main).toEqual('projects/bar/src/main.server.ts');
expect(opts.tsConfig).toEqual('projects/bar/tsconfig.server.json');
const configurations = targets.server.configurations;
expect(configurations.production).toBeDefined();
expect(configurations.production.fileReplacements).toBeDefined();
const fileReplacements = targets.server.configurations.production.fileReplacements;
expect(fileReplacements.length).toEqual(1);
expect(fileReplacements[0].replace).toEqual('projects/bar/src/environments/environment.ts');
expect(fileReplacements[0].with).toEqual('projects/bar/src/environments/environment.prod.ts');
});
it('should add a server transition to BrowerModule import', () => {