From 64a26862935ee8c7a548fc1e204b47060cb76cda Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Thu, 2 Jul 2020 13:00:05 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): show child compilation errors Closes #17565 --- .../src/angular-cli-files/utilities/stats.ts | 20 +++++++++++++++++-- .../build_angular/src/browser/index.ts | 11 +++++----- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/stats.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/stats.ts index ef2d3b4122..415ea7c5a2 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/stats.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/utilities/stats.ts @@ -94,8 +94,12 @@ export function statsWarningsToString(json: any, statsConfig: any) { const colors = statsConfig.colors; const rs = (x: string) => colors ? reset(x) : x; const y = (x: string) => colors ? bold(yellow(x)) : x; + const warnings = [...json.warnings]; + if (json.children) { + warnings.push(...json.children.map((c: any) => c.warnings)); + } - return rs('\n' + json.warnings + return rs('\n' + warnings .map((warning: any) => `${warning}`) .filter((warning: string) => !ERRONEOUS_WARNINGS.some((erroneous) => erroneous.test(warning))) .map((warning: string) => y(`WARNING in ${warning}`)) @@ -106,6 +110,18 @@ export function statsErrorsToString(json: any, statsConfig: any) { const colors = statsConfig.colors; const rs = (x: string) => colors ? reset(x) : x; const r = (x: string) => colors ? bold(red(x)) : x; + const errors = [...json.errors]; + if (json.children) { + errors.push(...json.children.map((c: any) => c.errors)); + } - return rs('\n' + json.errors.map((error: any) => r(`ERROR in ${error}`)).join('\n')); + return rs('\n' + errors.map((error: any) => r(`ERROR in ${error}`)).join('\n')); +} + +export function statsHasErrors(json: any): boolean { + return json.errors.length > 0 || !!json.children?.some((c: any) => c.errors.length); +} + +export function statsHasWarnings(json: any): boolean { + return json.warnings.length > 0 || !!json.children?.some((c: any) => c.warnings.length); } diff --git a/packages/angular_devkit/build_angular/src/browser/index.ts b/packages/angular_devkit/build_angular/src/browser/index.ts index 87d8a4eb46..839961e10a 100644 --- a/packages/angular_devkit/build_angular/src/browser/index.ts +++ b/packages/angular_devkit/build_angular/src/browser/index.ts @@ -39,6 +39,8 @@ import { generateBuildStats, generateBundleStats, statsErrorsToString, + statsHasErrors, + statsHasWarnings, statsToString, statsWarningsToString, } from '../angular-cli-files/utilities/stats'; @@ -302,10 +304,10 @@ export function buildWebpackBrowser( if (!success && useBundleDownleveling) { // If using bundle downleveling then there is only one build // If it fails show any diagnostic messages and bail - if (webpackStats && webpackStats.warnings.length > 0) { + if (statsHasWarnings(webpackStats)) { context.logger.warn(statsWarningsToString(webpackStats, { colors: true })); } - if (webpackStats && webpackStats.errors.length > 0) { + if (statsHasErrors(webpackStats)) { context.logger.error(statsErrorsToString(webpackStats, { colors: true })); } @@ -662,14 +664,13 @@ export function buildWebpackBrowser( break; default: assertNever(severity); - break; } } - if (webpackStats && webpackStats.warnings.length > 0) { + if (statsHasWarnings(webpackStats)) { context.logger.warn(statsWarningsToString(webpackStats, { colors: true })); } - if (webpackStats && webpackStats.errors.length > 0) { + if (statsHasErrors(webpackStats)) { context.logger.error(statsErrorsToString(webpackStats, { colors: true })); return { success: false };