From d55740d4fad2aec8a528bf0f9107404c1725701d Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Wed, 4 Oct 2017 13:37:38 +0100 Subject: [PATCH] fix(@angular/cli): support existing tsconfig.spec.json on Angular 5 --- .../@angular/cli/models/webpack-configs/typescript.ts | 10 ++++++++-- .../@ngtools/webpack/src/angular_compiler_plugin.ts | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/@angular/cli/models/webpack-configs/typescript.ts b/packages/@angular/cli/models/webpack-configs/typescript.ts index 332b6da5c1..51278a38b1 100644 --- a/packages/@angular/cli/models/webpack-configs/typescript.ts +++ b/packages/@angular/cli/models/webpack-configs/typescript.ts @@ -86,7 +86,8 @@ function _createAotPlugin(wco: WebpackConfigOptions, options: any) { hostReplacementPaths, sourceMap: buildOptions.sourcemaps, // If we don't explicitely list excludes, it will default to `['**/*.spec.ts']`. - exclude: [] + exclude: [], + include: options.include, }, options); return new AngularCompilerPlugin(pluginOptions); } else { @@ -149,7 +150,12 @@ export function getNonAotTestConfig(wco: WebpackConfigOptions) { const tsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.testTsconfig); const appTsConfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig); - let pluginOptions: any = { tsConfigPath, skipCodeGeneration: true }; + // Force include main and polyfills. + // This is needed for AngularCompilerPlugin compatibility with existing projects, + // since TS compilation there is stricter and tsconfig.spec.ts doesn't include them. + const include = [appConfig.main, appConfig.polyfills]; + + let pluginOptions: any = { tsConfigPath, skipCodeGeneration: true, include }; // Fallback to correct module format on projects using a shared tsconfig. if (tsConfigPath === appTsConfigPath) { diff --git a/packages/@ngtools/webpack/src/angular_compiler_plugin.ts b/packages/@ngtools/webpack/src/angular_compiler_plugin.ts index 3cceef29a4..5ca4aee792 100644 --- a/packages/@ngtools/webpack/src/angular_compiler_plugin.ts +++ b/packages/@ngtools/webpack/src/angular_compiler_plugin.ts @@ -193,6 +193,12 @@ export class AngularCompilerPlugin implements Tapable { tsConfigJson.exclude = tsConfigJson.exclude.concat(options.exclude); } + // Add extra includes. + if (options.hasOwnProperty('include') && Array.isArray(options.include)) { + tsConfigJson.include = tsConfigJson.include || []; + tsConfigJson.include.push(...options.include); + } + // Parse the tsconfig contents. const tsConfig = ts.parseJsonConfigFileContent( tsConfigJson, ts.sys, basePath, undefined, this._tsConfigPath);