@@ -100,8 +100,8 @@ yargs.options({
100
100
describe : 'close when stdin ends'
101
101
} ,
102
102
open : {
103
- type : 'boolean ' ,
104
- describe : 'Open default browser'
103
+ type : 'string ' ,
104
+ describe : 'Open the default browser, or optionally specify a browser name '
105
105
} ,
106
106
useLocalIp : {
107
107
type : 'boolean' ,
@@ -324,11 +324,15 @@ function processOptions(webpackOptions) {
324
324
325
325
if ( argv [ 'disable-host-check' ] ) { options . disableHostCheck = true ; }
326
326
327
- if ( argv . open || argv [ 'open-page' ] ) {
327
+ if ( argv [ 'open-page' ] ) {
328
328
options . open = true ;
329
329
options . openPage = argv [ 'open-page' ] ;
330
330
}
331
331
332
+ if ( typeof argv . open !== 'undefined' ) {
333
+ options . open = argv . open !== '' ? argv . open : true ;
334
+ }
335
+
332
336
if ( options . open && ! options . openPage ) { options . openPage = '' ; }
333
337
334
338
if ( argv . useLocalIp ) { options . useLocalIp = true ; }
@@ -452,9 +456,18 @@ function reportReadiness(uri, options) {
452
456
453
457
if ( options . bonjour ) { console . log ( 'Broadcasting "http" with subtype of "webpack" via ZeroConf DNS (Bonjour)' ) ; }
454
458
}
459
+
455
460
if ( options . open ) {
456
- open ( uri + options . openPage ) . catch ( ( ) => {
457
- console . log ( 'Unable to open browser. If you are running in a headless environment, please do not use the open flag.' ) ;
461
+ let openOptions = { } ;
462
+ let openMessage = 'Unable to open browser' ;
463
+
464
+ if ( typeof options . open === 'string' ) {
465
+ openOptions = { app : options . open } ;
466
+ openMessage += `: ${ options . open } ` ;
467
+ }
468
+
469
+ open ( uri + ( options . openPage || '' ) , openOptions ) . catch ( ( ) => {
470
+ console . log ( `${ openMessage } . If you are running in a headless environment, please do not use the open flag.` ) ;
458
471
} ) ;
459
472
}
460
473
}
0 commit comments