ionic-cli
ionic-cli copied to clipboard
re-add support for --configuration option for Angular CLI 14.x command "ng run app:build"
Description:
starting with Angular 14.x the Angular CLI ng run
does not support the --configuration
option any more, see Angular 14.0.0 Release Notes:
--configuration
cannot be used withng run
. Provide the configuration as part of the target. Ex:ng run project:builder:configuration
.
(and discussion in issue https://github.com/angular/angular-cli/issues/23385)
As a consequence, Angular configuration targets cannot be specified via the Ionic CLI command ionic build
any more:
in Angular 13.x it was possible to specify a configuration with
ionic build -- --configuration=my_configuration
which would generate the command
ng.cmd run app:build --configuration=my_configuration
(NOTE: my_configuration
is just an example, that is angular.json
would need to contain a configuration for my_configuration
- to use an existing configuration that exists by default for Ionic apps you could use the configuration for production
)
in Angular 14.x this generated command produces an error
Error: Unknown argument: configuration.
Provide the configuration as part of the target 'ng run app:build:my_configuration'.
[ERROR] An error occurred while running subprocess ng.
One possible solution would be, that the Ionic CLI parses the --configuration
option and appends it to the generated ng run
target, i.e. for ionic build -- --configuration=my_configuration
generate something like
ng.cmd run app:build:my_configuration
Steps to Reproduce:
test by explicitly setting production
configuration in Ionic CLI options:
- create Ionic app that uses Angular 14.x
- run command
ionic build -- --configuration=production
Output:
ionic build --verbose -- --configuration=production
ionic:lib Terminal info: { ci: false, shell: '...', tty: true, windows: true } +0ms
ionic:lib CLI global options: { _: [ 'build' ], help: null, h: null, verbose: true, quiet: null, interactive: true, color: true, confirm: null, json: null, project: null, '--': [ '--configuration=production' ] } +4ms
ionic:lib:project Project type from config: @ionic/angular (angular) +0ms
ionic:lib:project Project details: { context: 'app', type: 'angular', errors: [], configPath: '...\\ionic.config.json' } +0ms
ionic Context: { binPath: '...\\node_modules\\@ionic\\cli', execPath: '...', version: '6.20.1' } +0ms
ionic:lib:build build options: {
ionic:lib:build '--': [ '--configuration=production' ],
ionic:lib:build engine: 'browser',
ionic:lib:build platform: undefined,
ionic:lib:build project: 'app',
ionic:lib:build verbose: true,
ionic:lib:build configuration: undefined,
ionic:lib:build sourcemaps: undefined,
ionic:lib:build cordovaAssets: true,
ionic:lib:build watch: undefined,
ionic:lib:build type: 'angular'
ionic:lib:build } +0ms
ionic:lib:telemetry Sending telemetry for command: 'ionic build' [
ionic:lib:telemetry '--verbose',
ionic:lib:telemetry '--interactive',
ionic:lib:telemetry '--color',
ionic:lib:telemetry '--',
ionic:lib:telemetry '--configuration=production'
ionic:lib:telemetry ] +0ms
ionic:lib:hooks Looking for ionic:build:before npm script. +0ms
ionic:lib:build Looking for ionic:build npm script. +9ms
> ng.cmd run app:build --verbose --configuration=production
Error: Unknown argument: configuration.
Provide the configuration as part of the target 'ng run app:build:production'.
[ERROR] An error occurred while running subprocess ng.
ng.cmd run app:build --verbose --configuration=production exited with exit code 1.
Re-running this command with the --verbose flag may provide more information.
ionic:utils-process onBeforeExit handler: 'process.exit' received +0ms
ionic:utils-process onBeforeExit handler: running 1 functions +2ms
ionic:utils-process error while killing process tree for 26228: Error: Command failed: taskkill /pid 26228 /T /F
ionic:utils-process FEHLER: Der Prozess "26228" wurde nicht gefunden.
ionic:utils-process
ionic:utils-process at ChildProcess.exithandler (child_process.js:383:12)
ionic:utils-process at ChildProcess.emit (events.js:400:28)
ionic:utils-process at maybeClose (internal/child_process.js:1088:16)
ionic:utils-process at Process.ChildProcess._handle.onexit (internal/child_process.js:296:5) {
ionic:utils-process killed: false,
ionic:utils-process code: 128,
ionic:utils-process signal: null,
ionic:utils-process cmd: 'taskkill /pid 26228 /T /F'
ionic:utils-process } +143ms
ionic:utils-process onBeforeExit handler: error from function: Error: Command failed: taskkill /pid 26228 /T /F
ionic:utils-process FEHLER: Der Prozess "26228" wurde nicht gefunden.
ionic:utils-process
ionic:utils-process at ChildProcess.exithandler (child_process.js:383:12)
ionic:utils-process at ChildProcess.emit (events.js:400:28)
ionic:utils-process at maybeClose (internal/child_process.js:1088:16)
ionic:utils-process at Process.ChildProcess._handle.onexit (internal/child_process.js:296:5) {
ionic:utils-process killed: false,
ionic:utils-process code: 128,
ionic:utils-process signal: null,
ionic:utils-process cmd: 'taskkill /pid 26228 /T /F'
ionic:utils-process } +1ms
ionic:utils-process processExit: exiting (exit code: 1) +4ms
My ionic info
:
D:\SpeechTrans4Kita\speechtrans4kita-frontend_TEST_Angular14>ionic info
Ionic:
Ionic CLI : 6.20.1 (...\node_modules\@ionic\cli)
Ionic Framework : @ionic/angular 6.1.11
@angular-devkit/build-angular : 14.0.3
@angular-devkit/schematics : 14.0.3
@angular/cli : 14.0.3
@ionic/angular-toolkit : 6.1.0
Cordova:
Cordova CLI : 11.0.0
Cordova Platforms : none
Cordova Plugins : no whitelisted plugins (0 plugins total)
Utility:
cordova-res : 0.15.4
native-run : not installed globally
System:
Android SDK Tools : 26.1.1 (...Android\Sdk)
NodeJS : v14.19.3 (...\node.exe)
npm : 6.14.17
OS : Windows 10
Other Information:
my need to use npm shrinkwrap
to patch the angular version(s) used by @ionic/cordova-builders
to use angular 14
+1
Or please add a migration guid
+1
fyi if anyone else is wondering:
the configuration
option is now part of the ionic
CLI itself.
So instead of
# previously/outdated:
ionic build -- --configuration=my_configuration
you would use
# new:
ionic build --configuration=my_configuration
(i.e. use it before/without the double hyphen)