fix(ivy): ensure that changes to component resources trigger incremental builds (#30954)
Optimizations to skip compiling source files that had not changed did not account for the case where only a resource file changes, such as an external template or style file. Now we track such dependencies and trigger a recompilation if any of the previously tracked resources have changed. This will require a change on the CLI side to provide the list of resource files that changed to trigger the current compilation by implementing `CompilerHost.getModifiedResourceFiles()`. Closes #30947 PR Close #30954
This commit is contained in:

committed by
Kara Erickson

parent
dc613b336d
commit
48def92cad
@ -220,20 +220,21 @@ export function exitCodeFromResult(diags: Diagnostics | undefined): number {
|
||||
return diags.some(d => d.source === 'angular' && d.code === api.UNKNOWN_ERROR_CODE) ? 2 : 1;
|
||||
}
|
||||
|
||||
export function performCompilation({rootNames, options, host, oldProgram, emitCallback,
|
||||
mergeEmitResultsCallback,
|
||||
gatherDiagnostics = defaultGatherDiagnostics,
|
||||
customTransformers, emitFlags = api.EmitFlags.Default}: {
|
||||
rootNames: string[],
|
||||
options: api.CompilerOptions,
|
||||
host?: api.CompilerHost,
|
||||
oldProgram?: api.Program,
|
||||
emitCallback?: api.TsEmitCallback,
|
||||
mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback,
|
||||
gatherDiagnostics?: (program: api.Program) => Diagnostics,
|
||||
customTransformers?: api.CustomTransformers,
|
||||
emitFlags?: api.EmitFlags
|
||||
}): PerformCompilationResult {
|
||||
export function performCompilation(
|
||||
{rootNames, options, host, oldProgram, emitCallback, mergeEmitResultsCallback,
|
||||
gatherDiagnostics = defaultGatherDiagnostics, customTransformers,
|
||||
emitFlags = api.EmitFlags.Default, modifiedResourceFiles}: {
|
||||
rootNames: string[],
|
||||
options: api.CompilerOptions,
|
||||
host?: api.CompilerHost,
|
||||
oldProgram?: api.Program,
|
||||
emitCallback?: api.TsEmitCallback,
|
||||
mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback,
|
||||
gatherDiagnostics?: (program: api.Program) => Diagnostics,
|
||||
customTransformers?: api.CustomTransformers,
|
||||
emitFlags?: api.EmitFlags,
|
||||
modifiedResourceFiles?: Set<string>,
|
||||
}): PerformCompilationResult {
|
||||
let program: api.Program|undefined;
|
||||
let emitResult: ts.EmitResult|undefined;
|
||||
let allDiagnostics: Array<ts.Diagnostic|api.Diagnostic> = [];
|
||||
@ -241,6 +242,9 @@ export function performCompilation({rootNames, options, host, oldProgram, emitCa
|
||||
if (!host) {
|
||||
host = ng.createCompilerHost({options});
|
||||
}
|
||||
if (modifiedResourceFiles) {
|
||||
host.getModifiedResourceFiles = () => modifiedResourceFiles;
|
||||
}
|
||||
|
||||
program = ng.createProgram({rootNames, host, options, oldProgram});
|
||||
|
||||
|
Reference in New Issue
Block a user