From ddb92d815e4030abbce0cb58b460b4d8af8543ae Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Mon, 17 May 2021 12:19:18 +0200 Subject: [PATCH] fix(@angular/cli): improve `--prod` deprecation warning Closes #20806 --- .../angular/cli/models/architect-command.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/angular/cli/models/architect-command.ts b/packages/angular/cli/models/architect-command.ts index f5a822bead82..462243fe31a3 100644 --- a/packages/angular/cli/models/architect-command.ts +++ b/packages/angular/cli/models/architect-command.ts @@ -23,7 +23,7 @@ export interface ArchitectCommandOptions extends BaseCommandOptions { } export abstract class ArchitectCommand< - T extends ArchitectCommandOptions = ArchitectCommandOptions + T extends ArchitectCommandOptions = ArchitectCommandOptions, > extends Command { protected _architect!: Architect; protected _architectHost!: WorkspaceNodeModulesArchitectHost; @@ -238,7 +238,7 @@ export abstract class ArchitectCommand< } await this.reportAnalytics([this.description.name], { - ...(((await this._architectHost.getOptionsForTarget(target)) as unknown) as T), + ...((await this._architectHost.getOptionsForTarget(target)) as unknown as T), ...overrides, }); @@ -344,11 +344,18 @@ export abstract class ArchitectCommand< project = commandOptions.project; target = this.target; if (commandOptions.prod) { - // The --prod flag will always be the first configuration, available to be overwritten - // by following configurations. + const defaultConfig = + project && + target && + this.workspace?.projects.get(project)?.targets.get(target)?.defaultConfiguration; + this.logger.warn( - 'Option "--prod" is deprecated: Use "--configuration production" instead.', + defaultConfig === 'production' + ? 'Option "--prod" is deprecated: No need to use this option as this builder defaults to configuration "production".' + : 'Option "--prod" is deprecated: Use "--configuration production" instead.', ); + // The --prod flag will always be the first configuration, available to be overwritten + // by following configurations. configuration = 'production'; } if (commandOptions.configuration) {