fix(@angular/cli): support existing tsconfig.spec.json on Angular 5

This commit is contained in:
Filipe Silva 2017-10-04 13:37:38 +01:00 committed by Mike Brocchi
parent 08b284ec62
commit d55740d4fa
2 changed files with 14 additions and 2 deletions

View File

@ -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) {

View File

@ -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);