|  | 
| 1 | 1 | import {task} from 'gulp'; | 
| 2 |  | -import {DIST_DEMOAPP, SOURCE_ROOT} from '../constants'; | 
| 3 |  | -import {sequenceTask} from '../util/task_helpers'; | 
|  | 2 | +import {copySync} from 'fs-extra'; | 
|  | 3 | +import {DIST_DEMOAPP, DIST_RELEASE} from '../constants'; | 
|  | 4 | +import {sequenceTask, execNodeTask} from '../util/task_helpers'; | 
| 4 | 5 | import {join} from 'path'; | 
| 5 |  | -import {Program, CompilerHost} from 'typescript'; | 
| 6 |  | -import { | 
| 7 |  | -  main as tsc, CodeGenerator, AngularCompilerOptions, NgcCliOptions | 
| 8 |  | -} from '@angular/compiler-cli'; | 
| 9 | 6 | 
 | 
| 10 |  | -const tsconfigFile = join(SOURCE_ROOT, 'demo-app', 'tsconfig-aot.json'); | 
|  | 7 | +const tsconfigFile = join(DIST_DEMOAPP, 'tsconfig-aot.json'); | 
| 11 | 8 | 
 | 
| 12 | 9 | /** Builds the demo-app and library. To be able to run NGC, apply the metadata workaround. */ | 
| 13 |  | -task('aot:deps', sequenceTask('build:devapp', 'library:build:fix-metadata')); | 
|  | 10 | +task('aot:deps', sequenceTask('build:devapp', ':package:release', 'aot:copy-release')); | 
| 14 | 11 | 
 | 
| 15 |  | -/** After building the demo-app, run the Angular compiler to verify that all components work. */ | 
| 16 |  | -task('aot:build', ['aot:deps'], () => runAngularCompiler()); | 
|  | 12 | +// As a workaround for https://github.com/angular/angular/issues/12249, we need to | 
|  | 13 | +// copy the Material ESM output inside of the demo-app output. | 
|  | 14 | +task('aot:copy-release', () => { | 
|  | 15 | +  copySync(DIST_RELEASE, join(DIST_DEMOAPP, 'material')); | 
|  | 16 | +}); | 
| 17 | 17 | 
 | 
| 18 |  | -/** | 
| 19 |  | - * Angular does not expose a public function to run the Angular compiler. | 
| 20 |  | - * Creating the CodeGenerator from NGC and using it inside of tsc-wrapped is the same. */ | 
| 21 |  | -function runAngularCompiler() { | 
| 22 |  | -  return tsc(tsconfigFile, {basePath: DIST_DEMOAPP}, codegen); | 
| 23 |  | -} | 
| 24 |  | - | 
| 25 |  | -/** | 
| 26 |  | - * Codgen function from the @angular/compiler-cli package. | 
| 27 |  | - * See: https://github.com/angular/angular/blob/master/packages/compiler-cli/src/main.ts | 
| 28 |  | - */ | 
| 29 |  | -function codegen(ngOptions: AngularCompilerOptions, cliOptions: NgcCliOptions, program: Program, | 
| 30 |  | -    host: CompilerHost) { | 
| 31 |  | -  return CodeGenerator.create(ngOptions, cliOptions, program, host).codegen(); | 
| 32 |  | -} | 
|  | 18 | +/** Build the demo-app and a release to confirm that the library is AOT-compatible. */ | 
|  | 19 | +task('aot:build', ['aot:deps'], execNodeTask( | 
|  | 20 | +  '@angular/compiler-cli', 'ngc', ['-p', tsconfigFile] | 
|  | 21 | +)); | 
0 commit comments