refactor(compiler): don’t always compile `.ngfactory.ts` files by default
This puts the behavior introduced in 573b8611bc
behind the new flag
`alwaysCompileGeneratedCode` to not break users that might have relied
on this behavior.
This commit is contained in:
parent
6ca46929fa
commit
ed73d4f3ac
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"annotationsAs": "static fields",
|
"annotationsAs": "static fields",
|
||||||
"annotateForClosureCompiler": true
|
"annotateForClosureCompiler": true,
|
||||||
|
"alwaysCompileGeneratedCode": true
|
||||||
},
|
},
|
||||||
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
// in the same source directory with your code.
|
// in the same source directory with your code.
|
||||||
"genDir": ".",
|
"genDir": ".",
|
||||||
"debug": true,
|
"debug": true,
|
||||||
"enableSummariesForJit": true
|
"enableSummariesForJit": true,
|
||||||
|
"alwaysCompileGeneratedCode": true
|
||||||
},
|
},
|
||||||
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
|
|
@ -199,10 +199,40 @@ describe('compiler-cli', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('compile ngfactory files', () => {
|
describe('compile ngfactory files', () => {
|
||||||
|
it('should only compile ngfactory files that are referenced by root files by default',
|
||||||
|
(done) => {
|
||||||
|
writeConfig(`{
|
||||||
|
"extends": "./tsconfig-base.json",
|
||||||
|
"files": ["mymodule.ts"]
|
||||||
|
}`);
|
||||||
|
write('mymodule.ts', `
|
||||||
|
import {CommonModule} from '@angular/common';
|
||||||
|
import {NgModule} from '@angular/core';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [CommonModule]
|
||||||
|
})
|
||||||
|
export class MyModule {}
|
||||||
|
`);
|
||||||
|
|
||||||
|
main({p: basePath})
|
||||||
|
.then((exitCode) => {
|
||||||
|
expect(exitCode).toEqual(0);
|
||||||
|
|
||||||
|
expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngfactory.js'))).toBe(false);
|
||||||
|
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(e => done.fail(e));
|
||||||
|
});
|
||||||
|
|
||||||
it('should report errors for ngfactory files that are not referenced by root files', (done) => {
|
it('should report errors for ngfactory files that are not referenced by root files', (done) => {
|
||||||
writeConfig(`{
|
writeConfig(`{
|
||||||
"extends": "./tsconfig-base.json",
|
"extends": "./tsconfig-base.json",
|
||||||
"files": ["mymodule.ts"]
|
"files": ["mymodule.ts"],
|
||||||
|
"angularCompilerOptions": {
|
||||||
|
"alwaysCompileGeneratedCode": true
|
||||||
|
}
|
||||||
}`);
|
}`);
|
||||||
write('mymodule.ts', `
|
write('mymodule.ts', `
|
||||||
import {NgModule, Component} from '@angular/core';
|
import {NgModule, Component} from '@angular/core';
|
||||||
|
@ -235,7 +265,10 @@ describe('compiler-cli', () => {
|
||||||
it('should compile ngfactory files that are not referenced by root files', (done) => {
|
it('should compile ngfactory files that are not referenced by root files', (done) => {
|
||||||
writeConfig(`{
|
writeConfig(`{
|
||||||
"extends": "./tsconfig-base.json",
|
"extends": "./tsconfig-base.json",
|
||||||
"files": ["mymodule.ts"]
|
"files": ["mymodule.ts"],
|
||||||
|
"angularCompilerOptions": {
|
||||||
|
"alwaysCompileGeneratedCode": true
|
||||||
|
}
|
||||||
}`);
|
}`);
|
||||||
write('mymodule.ts', `
|
write('mymodule.ts', `
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
|
@ -289,7 +322,8 @@ describe('compiler-cli', () => {
|
||||||
"extends": "./tsconfig-base.json",
|
"extends": "./tsconfig-base.json",
|
||||||
"files": ["mymodule.ts"],
|
"files": ["mymodule.ts"],
|
||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"enableSummariesForJit": true
|
"enableSummariesForJit": true,
|
||||||
|
"alwaysCompileGeneratedCode": true
|
||||||
}
|
}
|
||||||
}`);
|
}`);
|
||||||
write('mymodule.ts', `
|
write('mymodule.ts', `
|
||||||
|
|
|
@ -124,8 +124,11 @@ export function main(
|
||||||
if (diagnostics) console.time('NG codegen');
|
if (diagnostics) console.time('NG codegen');
|
||||||
return codegen(ngOptions, cliOptions, program, host).then((genFiles) => {
|
return codegen(ngOptions, cliOptions, program, host).then((genFiles) => {
|
||||||
if (diagnostics) console.timeEnd('NG codegen');
|
if (diagnostics) console.timeEnd('NG codegen');
|
||||||
|
|
||||||
// Add the generated files to the configuration so they will become part of the program.
|
// Add the generated files to the configuration so they will become part of the program.
|
||||||
genFiles.forEach(genFileName => addGeneratedFileName(genFileName));
|
if (ngOptions.alwaysCompileGeneratedCode) {
|
||||||
|
genFiles.forEach(genFileName => addGeneratedFileName(genFileName));
|
||||||
|
}
|
||||||
let definitionsHost: ts.CompilerHost = tsickleCompilerHost;
|
let definitionsHost: ts.CompilerHost = tsickleCompilerHost;
|
||||||
if (!ngOptions.skipMetadataEmit) {
|
if (!ngOptions.skipMetadataEmit) {
|
||||||
// if tsickle is not not used for emitting, but we do use the MetadataWriterHost,
|
// if tsickle is not not used for emitting, but we do use the MetadataWriterHost,
|
||||||
|
|
|
@ -83,8 +83,13 @@ interface Options extends ts.CompilerOptions {
|
||||||
enableLegacyTemplate?: boolean;
|
enableLegacyTemplate?: boolean;
|
||||||
|
|
||||||
// Whether to generate .ngsummary.ts files that allow to use AOTed artifacts
|
// Whether to generate .ngsummary.ts files that allow to use AOTed artifacts
|
||||||
// in JIT mode.
|
// in JIT mode. This is off by default.
|
||||||
enableSummariesForJit?: boolean;
|
enableSummariesForJit?: boolean;
|
||||||
|
|
||||||
|
// Whether to compile generated .ngfacgtory.ts files, even when they are no
|
||||||
|
// matched by the `files` / `includes` in the `tsconfig.json`.
|
||||||
|
// This is off by default.
|
||||||
|
alwaysCompileGeneratedCode?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Options;
|
export default Options;
|
||||||
|
|
Loading…
Reference in New Issue