Skip to content

Commit 47452c6

Browse files
wagnermacielvikerman
authored andcommitted
feat(prerender): config preredner in ng add (#1365)
* feat(prerender): config preredner in ng add * fix: use production for browser/server targets when setting up the prerender target * update test for using production mode for browser and server targets in prerender. * use empty routes list by default
1 parent 5af323d commit 47452c6

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

modules/common/schematics/add/index.spec.ts

+3
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ describe('Add Schematic Rule', () => {
3737
expect(architect.server.options.main).toBe('projects/test-app/server.ts');
3838
expect(architect['serve-ssr'].options.serverTarget).toBe('test-app:server');
3939
expect(architect['serve-ssr'].options.browserTarget).toBe('test-app:build');
40+
expect(architect['prerender'].options.serverTarget).toBe('test-app:server:production');
41+
expect(architect['prerender'].options.browserTarget).toBe('test-app:build:production');
4042

4143
const productionConfig = architect.server.configurations.production;
4244
expect(productionConfig.fileReplacements).toBeDefined();
@@ -55,6 +57,7 @@ describe('Add Schematic Rule', () => {
5557
expect(scripts['build:ssr']).toBe('ng build --prod && ng run test-app:server:production');
5658
expect(scripts['serve:ssr']).toBe('node dist/test-app/server/main.js');
5759
expect(scripts['dev:ssr']).toBe('ng run test-app:serve-ssr');
60+
expect(scripts['prerender']).toBe('ng run test-app:prerender');
5861
});
5962

6063
it('should add devDependency: @nguniversal/builders', async () => {

modules/common/schematics/add/index.ts

+17
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {addPackageJsonDependency, NodeDependencyType} from '@schematics/angular/
2424
import {stripTsExtension, getOutputPath, getProject} from '../utils';
2525

2626
const SERVE_SSR_TARGET_NAME = 'serve-ssr';
27+
const PRERENDER_TARGET_NAME = 'prerender';
2728

2829
export interface AddUniversalOptions extends UniversalOptions {
2930
serverFileName?: string;
@@ -63,6 +64,7 @@ function addScriptsRule(options: AddUniversalOptions): Rule {
6364
'dev:ssr': `ng run ${options.clientProject}:${SERVE_SSR_TARGET_NAME}`,
6465
'serve:ssr': `node ${serverDist}/main.js`,
6566
'build:ssr': `ng build --prod && ng run ${options.clientProject}:server:production`,
67+
'prerender': `ng run ${options.clientProject}:${PRERENDER_TARGET_NAME}`,
6668
};
6769

6870
host.overwrite(pkgPath, JSON.stringify(pkg, null, 2));
@@ -103,6 +105,21 @@ function updateWorkspaceConfigRule(options: AddUniversalOptions): Rule {
103105
},
104106
},
105107
});
108+
109+
const prerenderTarget = project.targets.get(PRERENDER_TARGET_NAME);
110+
if (prerenderTarget) {
111+
return;
112+
}
113+
114+
project.targets.add({
115+
name: PRERENDER_TARGET_NAME,
116+
builder: '@nguniversal/builders:prerender',
117+
options: {
118+
browserTarget: `${projectName}:build:production`,
119+
serverTarget: `${projectName}:server:production`,
120+
routes: []
121+
}
122+
});
106123
});
107124
};
108125
}

0 commit comments

Comments
 (0)