feat(bazel): allow passing a custom bazel compiler host to ngc compile (#31341)

Enable users to pass a custom Bazel CompilerHost to use for an Angular
compilation. This supports users who must override the TypeScript
compiler host.

PR Close #31341
This commit is contained in:
Ayaz Hafiz 2019-06-28 08:33:53 -07:00 committed by Alex Rickabaugh
parent 0de5d79bf6
commit a29dc961a2
1 changed files with 8 additions and 4 deletions

View File

@ -145,13 +145,15 @@ export function relativeToRootDirs(filePath: string, rootDirs: string[]): string
} }
export function compile({allDepsCompiledWithBazel = true, compilerOpts, tsHost, bazelOpts, files, export function compile({allDepsCompiledWithBazel = true, compilerOpts, tsHost, bazelOpts, files,
inputs, expectedOuts, gatherDiagnostics}: { inputs, expectedOuts, gatherDiagnostics, bazelHost}: {
allDepsCompiledWithBazel?: boolean, allDepsCompiledWithBazel?: boolean,
compilerOpts: ng.CompilerOptions, compilerOpts: ng.CompilerOptions,
tsHost: ts.CompilerHost, inputs?: {[path: string]: string}, tsHost: ts.CompilerHost, inputs?: {[path: string]: string},
bazelOpts: BazelOptions, bazelOpts: BazelOptions,
files: string[], files: string[],
expectedOuts: string[], gatherDiagnostics?: (program: ng.Program) => ng.Diagnostics expectedOuts: string[],
gatherDiagnostics?: (program: ng.Program) => ng.Diagnostics,
bazelHost?: CompilerHost,
}): {diagnostics: ng.Diagnostics, program: ng.Program} { }): {diagnostics: ng.Diagnostics, program: ng.Program} {
let fileLoader: FileLoader; let fileLoader: FileLoader;
@ -244,8 +246,10 @@ export function compile({allDepsCompiledWithBazel = true, compilerOpts, tsHost,
moduleName, containingFile, compilerOptions, generatedFileModuleResolverHost); moduleName, containingFile, compilerOptions, generatedFileModuleResolverHost);
} }
const bazelHost = new CompilerHost( if (!bazelHost) {
bazelHost = new CompilerHost(
files, compilerOpts, bazelOpts, tsHost, fileLoader, generatedFileModuleResolver); files, compilerOpts, bazelOpts, tsHost, fileLoader, generatedFileModuleResolver);
}
// Also need to disable decorator downleveling in the BazelHost in Ivy mode. // Also need to disable decorator downleveling in the BazelHost in Ivy mode.
if (isInIvyMode) { if (isInIvyMode) {