From 86a3f90954121c1d26797bde6820bfe7cc47b1a1 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Fri, 12 Apr 2019 16:14:35 +0100 Subject: [PATCH] fix(compiler-cli): pass config path to ts.parseJsonConfigFileContent (#29872) The config path is an optional argument to `ts.parseJsonConfigFileContent`. When passed, it is added to the returned object as `options.configFilePath`, and `tsc` itself passes it in. The new TS 3.4 [incremental](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html) build functionality relies on this property being present: https://github.com/Microsoft/TypeScript/blob/025d82633915b67003ea38ba40b9239a19721c13/src/compiler/emitter.ts#L56-L57 When using The compiler-cli `readConfiguration` the config path option isn't passed, preventing consumers (like @ngtools/webpack) from obtaining a complete config object. This PR fixes this omission and should allow JIT users of @ngtools/webpack to set the `incremental` option in their tsconfig and have it be used by the TS program. I tested this in JIT and saw a small decrease in build times in a small project. In AOT the incremental option didn't seem to be used at all, due to how `ngc` uses the TS APIs. Related to https://github.com/angular/angular-cli/issues/13941. PR Close #29872 --- packages/compiler-cli/src/perform_compile.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/compiler-cli/src/perform_compile.ts b/packages/compiler-cli/src/perform_compile.ts index a7371c4039..2ae082e010 100644 --- a/packages/compiler-cli/src/perform_compile.ts +++ b/packages/compiler-cli/src/perform_compile.ts @@ -179,8 +179,9 @@ export function readConfiguration( readDirectory: ts.sys.readDirectory, readFile: ts.sys.readFile }; - const parsed = - ts.parseJsonConfigFileContent(config, parseConfigHost, basePath, existingOptions); + const configFileName = path.resolve(process.cwd(), projectFile); + const parsed = ts.parseJsonConfigFileContent( + config, parseConfigHost, basePath, existingOptions, configFileName); const rootNames = parsed.fileNames.map(f => path.normalize(f)); const options = createNgCompilerOptions(basePath, config, parsed.options);