1
1
import { normalize } from 'path' ;
2
2
import { getGlobalVariable } from '../../utils/env' ;
3
- import { expectFileToMatch , writeFile } from '../../utils/fs' ;
3
+ import { appendToFile , expectFileToMatch , writeFile } from '../../utils/fs' ;
4
4
import { exec , ng , silentNpm } from '../../utils/process' ;
5
5
import { updateJsonFile } from '../../utils/project' ;
6
6
import { readNgVersion } from '../../utils/version' ;
@@ -9,9 +9,7 @@ export default async function () {
9
9
const argv = getGlobalVariable ( 'argv' ) ;
10
10
const veEnabled = argv [ 've' ] ;
11
11
12
- await ng ( 'add' , '@nguniversal/express-engine' , '--client-project' , 'test-project' ) ;
13
- // todo remove once https://github.com/angular/universal/pull/1229 is landed
14
- await silentNpm ( 'install' , '@types/express' , '--save-dev' ) ;
12
+ await ng ( 'add' , '@nguniversal/[email protected] ' ) ;
15
13
16
14
await updateJsonFile ( 'package.json' , packageJson => {
17
15
const dependencies = packageJson [ 'dependencies' ] ;
@@ -22,32 +20,40 @@ export default async function () {
22
20
23
21
await silentNpm ( 'install' ) ;
24
22
if ( veEnabled ) {
23
+ // todo: https://github.com/angular/angular-cli/issues/15851
24
+ // We need to fix the 'export_ngfactory' transformer as with the
25
+ // new universal approach the factory is not exported.
26
+ await appendToFile (
27
+ './src/main.server.ts' ,
28
+ `export { AppServerModuleNgFactory } from './app/app.server.module.ngfactory'` ,
29
+ ) ;
30
+
25
31
await writeFile (
26
- './index.js ' ,
27
- ` require( 'zone.js/dist/zone-node') ;
28
- const fs = require( 'fs') ;
29
- const { AppServerModuleNgFactory, renderModuleFactory } = require( './dist/server/ main') ;
32
+ './server.ts ' ,
33
+ ` import 'zone.js/dist/zone-node';
34
+ import * as fs from 'fs';
35
+ import { AppServerModuleNgFactory, renderModuleFactory } from './src/ main.server' ;
30
36
31
37
renderModuleFactory(AppServerModuleNgFactory, {
32
38
url: '/',
33
39
document: '<app-root></app-root>'
34
40
}).then(html => {
35
- fs.writeFileSync('dist/server/index.html', html);
41
+ fs.writeFileSync('dist/test-project/ server/index.html', html);
36
42
});
37
43
` ,
38
44
) ;
39
45
} else {
40
46
await writeFile (
41
- './index.js ' ,
42
- ` require( 'zone.js/dist/zone-node') ;
43
- const fs = require( 'fs') ;
44
- const { AppServerModule, renderModule } = require( './dist/server/ main') ;
47
+ './server.ts ' ,
48
+ ` import 'zone.js/dist/zone-node';
49
+ import * as fs from 'fs';
50
+ import { AppServerModule, renderModule } from './src/ main.server' ;
45
51
46
52
renderModule(AppServerModule, {
47
53
url: '/',
48
54
document: '<app-root></app-root>'
49
55
}).then(html => {
50
- fs.writeFileSync('dist/server/index.html', html);
56
+ fs.writeFileSync('dist/test-project/ server/index.html', html);
51
57
});
52
58
` ,
53
59
) ;
@@ -56,18 +62,18 @@ export default async function () {
56
62
57
63
await ng ( 'run' , 'test-project:server:production' , '--optimization' , 'false' ) ;
58
64
59
- await expectFileToMatch ( 'dist/server/main.js' , veEnabled ? / e x p o r t s .* A p p S e r v e r M o d u l e N g F a c t o r y / : / e x p o r t s .* A p p S e r v e r M o d u l e / ) ;
60
- await exec ( normalize ( 'node' ) , 'index .js' ) ;
65
+ await expectFileToMatch ( 'dist/test-project/ server/main.js' , veEnabled ? / e x p o r t s .* A p p S e r v e r M o d u l e N g F a c t o r y / : / e x p o r t s .* A p p S e r v e r M o d u l e / ) ;
66
+ await exec ( normalize ( 'node' ) , 'dist/test-project/server/main .js' ) ;
61
67
await expectFileToMatch (
62
- 'dist/server/index.html' ,
68
+ 'dist/test-project/ server/index.html' ,
63
69
/ < p .* > H e r e a r e s o m e l i n k s t o h e l p y o u g e t s t a r t e d : < \/ p > / ,
64
70
) ;
65
71
66
72
// works with optimization and bundleDependencies enabled
67
73
await ng ( 'run' , 'test-project:server:production' , '--optimization' , '--bundleDependencies' , 'all' ) ;
68
- await exec ( normalize ( 'node' ) , 'index .js' ) ;
74
+ await exec ( normalize ( 'node' ) , 'dist/test-project/server/main .js' ) ;
69
75
await expectFileToMatch (
70
- 'dist/server/index.html' ,
76
+ 'dist/test-project/ server/index.html' ,
71
77
/ < p .* > H e r e a r e s o m e l i n k s t o h e l p y o u g e t s t a r t e d : < \/ p > / ,
72
78
) ;
73
79
}
0 commit comments