fix(compiler): compile .ngfactory.ts
files even if nobody references them. (#16899)
This is especially important for library authors, as they will not reference the .ngfactory.ts files. Fixes #16741
This commit is contained in:

committed by
Chuck Jazdzewski

parent
966eb2fbd0
commit
573b8611bc
@ -33,6 +33,7 @@ export class CompilerHost implements AotCompilerHost {
|
||||
private resolverCache = new Map<string, ModuleMetadata[]>();
|
||||
private bundleIndexCache = new Map<string, boolean>();
|
||||
private bundleIndexNames = new Set<string>();
|
||||
private bundleRedirectNames = new Set<string>();
|
||||
private moduleFileNames = new Map<string, string|null>();
|
||||
protected resolveModuleNameHost: CompilerHostContext;
|
||||
|
||||
@ -280,7 +281,8 @@ export class CompilerHost implements AotCompilerHost {
|
||||
// Check for a bundle index.
|
||||
if (this.hasBundleIndex(filePath)) {
|
||||
const normalFilePath = path.normalize(filePath);
|
||||
return this.bundleIndexNames.has(normalFilePath);
|
||||
return this.bundleIndexNames.has(normalFilePath) ||
|
||||
this.bundleRedirectNames.has(normalFilePath);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -331,7 +333,13 @@ export class CompilerHost implements AotCompilerHost {
|
||||
const metadataFile = typings.replace(DTS, '.metadata.json');
|
||||
if (this.context.fileExists(metadataFile)) {
|
||||
const metadata = JSON.parse(this.context.readFile(metadataFile));
|
||||
if (metadata.importAs) {
|
||||
if (metadata.bundleRedirect) {
|
||||
this.bundleRedirectNames.add(typings);
|
||||
// Note: don't set result = true,
|
||||
// as this would mark this folder
|
||||
// as having a bundleIndex too early without
|
||||
// filling the bundleIndexNames.
|
||||
} else if (metadata.importAs) {
|
||||
this.bundleIndexNames.add(typings);
|
||||
result = true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user