From bfacee4816f40b2a337032c6ace6f003cb26c919 Mon Sep 17 00:00:00 2001 From: Tim Lancina Date: Thu, 7 Mar 2019 20:10:43 -0800 Subject: [PATCH 1/4] feat(serve): support --consolelogs for cordova-serve in angular projects Anything that triggers an `ionic-cordova-serve`, as defined in `@ionic/angular-toolkit`, will pass through the --consolelogs and --consolelogs-port flags, allowing you to print app console logs to the terminal. Right now that is `ionic cordova run ios --livereload` and `ionic serve --devapp`, Addresses https://github.com/ionic-team/ionic-cli/issues/3169. Depends on https://github.com/ionic-team/angular-toolkit/pull/100. --- packages/ionic/src/definitions.ts | 2 ++ .../ionic/src/lib/project/angular/serve.ts | 28 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/ionic/src/definitions.ts b/packages/ionic/src/definitions.ts index 8a210b4c40..9a3f6e08aa 100644 --- a/packages/ionic/src/definitions.ts +++ b/packages/ionic/src/definitions.ts @@ -566,6 +566,8 @@ export interface ServeOptions { } export interface AngularServeOptions extends ServeOptions { + consolelogs?: boolean; + consolelogsPort?: number; ssl?: boolean; configuration?: string; sourcemaps?: boolean; diff --git a/packages/ionic/src/lib/project/angular/serve.ts b/packages/ionic/src/lib/project/angular/serve.ts index 42704126a2..ce34a67c60 100644 --- a/packages/ionic/src/lib/project/angular/serve.ts +++ b/packages/ionic/src/lib/project/angular/serve.ts @@ -1,10 +1,11 @@ import { CommandGroup, OptionGroup, ParsedArgs, unparseArgs } from '@ionic/cli-framework'; import { stripAnsi } from '@ionic/cli-framework/utils/format'; +import { str2num } from '@ionic/cli-framework/utils/string'; import { findClosestOpenPort } from '@ionic/utils-network'; import chalk from 'chalk'; import { AngularServeOptions, CommandLineInputs, CommandLineOptions, CommandMetadata, ServeDetails } from '../../../definitions'; -import { BIND_ALL_ADDRESS, LOCAL_ADDRESSES, SERVE_SCRIPT, ServeCLI, ServeRunner, ServeRunnerDeps } from '../../serve'; +import { BIND_ALL_ADDRESS, DEFAULT_DEV_LOGGER_PORT as DEFAULT_CONSOLE_LOGS_PORT, LOCAL_ADDRESSES, SERVE_SCRIPT, ServeCLI, ServeRunner, ServeRunnerDeps } from '../../serve'; import { AngularProject } from './'; @@ -36,6 +37,22 @@ The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold }, ], options: [ + { + name: 'consolelogs', + summary: 'Print app console logs to Ionic CLI', + type: Boolean, + groups: [OptionGroup.Advanced, 'cordova'], + // aliases: ['c'], Already used by ng cli for --configuration + hint: chalk.dim('[ng]'), + }, + { + name: 'consolelogs-port', + summary: 'Use specific port for console logs server', + type: String, + groups: [OptionGroup.Advanced, 'cordova'], + hint: chalk.dim('[ng]'), + spec: { value: 'port' }, + }, { name: 'ssl', summary: 'Use HTTPS for the dev server', @@ -85,9 +102,16 @@ The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold const ssl = options['ssl'] ? Boolean(options['ssl']) : undefined; const configuration = options['configuration'] ? String(options['configuration']) : (prod ? 'production' : undefined); const sourcemaps = typeof options['source-map'] === 'boolean' ? Boolean(options['source-map']) : undefined; + const consolelogs = typeof options['consolelogs'] === 'boolean' ? Boolean(options['consolelogs']) : undefined; + let consolelogsPort; + if (consolelogs) { + consolelogsPort = str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT); + } return { ...baseOptions, + consolelogs, + consolelogsPort, ssl, configuration, sourcemaps, @@ -215,6 +239,8 @@ export class AngularServeCLI extends ServeCLI { if (options.devapp) { args.cordovaMock = true; } + args.consolelogs = options.consolelogs ? true : undefined; + args['consolelogs-port'] = options.consolelogsPort ? String(options.consolelogsPort) : undefined; } if (this.resolvedProgram !== this.program) { From 5f34858c8df2e82d33553e67656ddf405ae308e4 Mon Sep 17 00:00:00 2001 From: Tim Lancina Date: Fri, 8 Mar 2019 18:00:07 -0800 Subject: [PATCH 2/4] chore(serve): code cleanup, change --consolelogs summary --- packages/ionic/src/lib/project/angular/serve.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/ionic/src/lib/project/angular/serve.ts b/packages/ionic/src/lib/project/angular/serve.ts index ce34a67c60..b9bfd13ce1 100644 --- a/packages/ionic/src/lib/project/angular/serve.ts +++ b/packages/ionic/src/lib/project/angular/serve.ts @@ -39,7 +39,7 @@ The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold options: [ { name: 'consolelogs', - summary: 'Print app console logs to Ionic CLI', + summary: 'Print app console logs to the terminal', type: Boolean, groups: [OptionGroup.Advanced, 'cordova'], // aliases: ['c'], Already used by ng cli for --configuration @@ -103,10 +103,7 @@ The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold const configuration = options['configuration'] ? String(options['configuration']) : (prod ? 'production' : undefined); const sourcemaps = typeof options['source-map'] === 'boolean' ? Boolean(options['source-map']) : undefined; const consolelogs = typeof options['consolelogs'] === 'boolean' ? Boolean(options['consolelogs']) : undefined; - let consolelogsPort; - if (consolelogs) { - consolelogsPort = str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT); - } + const consolelogsPort = consolelogs ? str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT) : undefined; return { ...baseOptions, From 671d9a846006dfc296caabcc2113fc3e8dd51511 Mon Sep 17 00:00:00 2001 From: Tim Lancina Date: Sat, 9 Mar 2019 11:43:37 -0800 Subject: [PATCH 3/4] feat(serve): default --consolelogs with --devapp `-c` is already taken as an alias for `ng`'s `--configuration`, so instead of making people type `--consolelogs` we have it be included by default. --- packages/ionic/src/lib/project/angular/serve.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/ionic/src/lib/project/angular/serve.ts b/packages/ionic/src/lib/project/angular/serve.ts index b9bfd13ce1..78fce7172a 100644 --- a/packages/ionic/src/lib/project/angular/serve.ts +++ b/packages/ionic/src/lib/project/angular/serve.ts @@ -102,8 +102,14 @@ The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold const ssl = options['ssl'] ? Boolean(options['ssl']) : undefined; const configuration = options['configuration'] ? String(options['configuration']) : (prod ? 'production' : undefined); const sourcemaps = typeof options['source-map'] === 'boolean' ? Boolean(options['source-map']) : undefined; - const consolelogs = typeof options['consolelogs'] === 'boolean' ? Boolean(options['consolelogs']) : undefined; - const consolelogsPort = consolelogs ? str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT) : undefined; + let consolelogs = typeof options['consolelogs'] === 'boolean' ? Boolean(options['consolelogs']) : undefined; + let consolelogsPort = consolelogs ? str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT) : undefined; + + // if not defined, default to true for devapp + if (options.devapp) { + consolelogs = consolelogs === undefined ? true : consolelogs; + consolelogsPort = str2num(options['consolelogs-port'], DEFAULT_CONSOLE_LOGS_PORT); + } return { ...baseOptions, From 38195baf183326c6d5c2b2e7094a57b34dfb7ef9 Mon Sep 17 00:00:00 2001 From: Daniel Imhoff Date: Wed, 17 Apr 2019 19:44:17 -0500 Subject: [PATCH 4/4] fix a thing --- packages/ionic/src/lib/project/angular/serve.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/ionic/src/lib/project/angular/serve.ts b/packages/ionic/src/lib/project/angular/serve.ts index 6b60ce38c6..e618797c1c 100644 --- a/packages/ionic/src/lib/project/angular/serve.ts +++ b/packages/ionic/src/lib/project/angular/serve.ts @@ -41,7 +41,7 @@ The dev server can use HTTPS via the ${input('--ssl')} option ${chalk.bold.red(' name: 'consolelogs', summary: 'Print app console logs to the terminal', type: Boolean, - groups: [OptionGroup.Advanced, 'cordova'], + groups: [MetadataGroup.ADVANCED, 'cordova'], // aliases: ['c'], Already used by ng cli for --configuration hint: weak('[ng]'), }, @@ -49,7 +49,7 @@ The dev server can use HTTPS via the ${input('--ssl')} option ${chalk.bold.red(' name: 'consolelogs-port', summary: 'Use specific port for console logs server', type: String, - groups: [OptionGroup.Advanced, 'cordova'], + groups: [MetadataGroup.ADVANCED, 'cordova'], hint: weak('[ng]'), spec: { value: 'port' }, },