@@ -586,92 +586,93 @@ class Server {
586
586
587
587
showStatus ( ) {
588
588
const useColor = getColorsOption ( getCompilerConfigArray ( this . compiler ) ) ;
589
-
590
589
const protocol = this . options . https ? 'https' : 'http' ;
591
- const { address : hostname , port } = this . server . address ( ) ;
590
+ const { address, port } = this . server . address ( ) ;
592
591
const prettyPrintUrl = ( newHostname ) =>
593
592
url . format ( { protocol, hostname : newHostname , port, pathname : '/' } ) ;
594
593
595
- let localhostForTerminal ;
596
- let networkUrlForTerminalIPv4 ;
597
- let networkUrlForTerminalIPv6 ;
594
+ let server ;
595
+ let localhost ;
596
+ let loopbackIPv4 ;
597
+ let loopbackIPv6 ;
598
+ let networkUrlIPv4 ;
599
+ let networkUrlIPv6 ;
600
+
601
+ if ( this . hostname ) {
602
+ if ( this . hostname === 'localhost' ) {
603
+ localhost = prettyPrintUrl ( 'localhost' ) ;
604
+ } else {
605
+ let isIP ;
606
+
607
+ try {
608
+ isIP = ipaddr . parse ( this . hostname ) ;
609
+ } catch ( error ) {
610
+ // Ignore
611
+ }
612
+
613
+ if ( ! isIP ) {
614
+ server = prettyPrintUrl ( this . hostname ) ;
615
+ }
616
+ }
617
+ }
598
618
599
- const parsedIP = ipaddr . parse ( hostname ) ;
600
- const isUnspecified = parsedIP . range ( ) === 'unspecified' ;
619
+ const parsedIP = ipaddr . parse ( address ) ;
601
620
602
- if ( isUnspecified ) {
603
- localhostForTerminal = prettyPrintUrl ( 'localhost' ) ;
621
+ if ( parsedIP . range ( ) === 'unspecified' ) {
622
+ localhost = prettyPrintUrl ( 'localhost' ) ;
604
623
605
624
const networkIPv4 = internalIp . v4 . sync ( ) ;
606
625
607
626
if ( networkIPv4 ) {
608
- networkUrlForTerminalIPv4 = prettyPrintUrl ( networkIPv4 ) ;
627
+ networkUrlIPv4 = prettyPrintUrl ( networkIPv4 ) ;
609
628
}
610
629
611
- if ( hostname === '::' ) {
612
- const networkIPv6 = internalIp . v6 . sync ( ) ;
630
+ const networkIPv6 = internalIp . v6 . sync ( ) ;
613
631
614
- if ( networkIPv6 ) {
615
- networkUrlForTerminalIPv6 = prettyPrintUrl ( networkIPv6 ) ;
616
- }
632
+ if ( networkIPv6 ) {
633
+ networkUrlIPv6 = prettyPrintUrl ( networkIPv6 ) ;
617
634
}
618
- } else {
619
- if ( parsedIP . range ( ) === 'loopback' ) {
620
- localhostForTerminal = prettyPrintUrl ( 'localhost' ) ;
635
+ } else if ( parsedIP . range ( ) === 'loopback' ) {
636
+ if ( parsedIP . kind ( ) === 'ipv4' ) {
637
+ loopbackIPv4 = prettyPrintUrl ( parsedIP . toString ( ) ) ;
638
+ } else if ( parsedIP . kind ( ) === 'ipv6' ) {
639
+ loopbackIPv6 = prettyPrintUrl ( parsedIP . toString ( ) ) ;
621
640
}
641
+ } else {
642
+ networkUrlIPv4 =
643
+ parsedIP . kind ( ) === 'ipv6' && parsedIP . isIPv4MappedAddress ( )
644
+ ? prettyPrintUrl ( parsedIP . toIPv4Address ( ) . toString ( ) )
645
+ : prettyPrintUrl ( address ) ;
622
646
623
647
if ( parsedIP . kind ( ) === 'ipv6' ) {
624
- if ( parsedIP . isIPv4MappedAddress ( ) ) {
625
- networkUrlForTerminalIPv4 = prettyPrintUrl (
626
- parsedIP . toIPv4Address ( ) . toString ( )
627
- ) ;
628
- }
629
- } else {
630
- networkUrlForTerminalIPv4 = prettyPrintUrl ( hostname ) ;
648
+ networkUrlIPv6 = prettyPrintUrl ( address ) ;
631
649
}
650
+ }
632
651
633
- if ( parsedIP . kind ( ) === 'ipv6' ) {
634
- networkUrlForTerminalIPv6 = prettyPrintUrl ( hostname ) ;
635
- }
652
+ this . logger . info ( 'Project is running at:' ) ;
653
+
654
+ if ( server ) {
655
+ this . logger . info ( `Server: ${ colors . info ( useColor , server ) } ` ) ;
636
656
}
637
657
638
- if ( isUnspecified ) {
639
- this . logger . info ( 'Project is running at:' ) ;
640
- this . logger . info ( `Local: ${ colors . info ( useColor , localhostForTerminal ) } ` ) ;
641
-
642
- const networkUrlsForTerminal = [ ]
643
- . concat (
644
- networkUrlForTerminalIPv4
645
- ? [ `${ colors . info ( useColor , networkUrlForTerminalIPv4 ) } (IPv4)` ]
646
- : [ ]
647
- )
648
- . concat (
649
- networkUrlForTerminalIPv6
650
- ? [ `${ colors . info ( useColor , networkUrlForTerminalIPv6 ) } (IPv6)` ]
651
- : [ ]
652
- ) ;
658
+ if ( localhost || loopbackIPv4 || loopbackIPv6 ) {
659
+ const loopbacks = [ ]
660
+ . concat ( localhost ? [ colors . info ( useColor , localhost ) ] : [ ] )
661
+ . concat ( loopbackIPv4 ? [ colors . info ( useColor , loopbackIPv4 ) ] : [ ] )
662
+ . concat ( loopbackIPv6 ? [ colors . info ( useColor , loopbackIPv6 ) ] : [ ] ) ;
653
663
654
- this . logger . info ( `On Your Network: ${ networkUrlsForTerminal . join ( ', ' ) } ` ) ;
655
- } else {
656
- const networkUrlsForTerminal = [ ]
657
- . concat (
658
- localhostForTerminal
659
- ? [ `${ colors . info ( useColor , localhostForTerminal ) } ` ]
660
- : [ ]
661
- )
662
- . concat (
663
- networkUrlForTerminalIPv4
664
- ? [ `${ colors . info ( useColor , networkUrlForTerminalIPv4 ) } (IPv4)` ]
665
- : [ ]
666
- )
667
- . concat (
668
- networkUrlForTerminalIPv6
669
- ? [ `${ colors . info ( useColor , networkUrlForTerminalIPv6 ) } (IPv6)` ]
670
- : [ ]
671
- ) ;
664
+ this . logger . info ( `Loopback: ${ loopbacks . join ( ', ' ) } ` ) ;
665
+ }
666
+
667
+ if ( networkUrlIPv4 ) {
668
+ this . logger . info (
669
+ `On Your Network (IPv4): ${ colors . info ( useColor , networkUrlIPv4 ) } `
670
+ ) ;
671
+ }
672
672
673
+ if ( networkUrlIPv6 ) {
673
674
this . logger . info (
674
- `Project is running at ${ networkUrlsForTerminal . join ( ', ' ) } `
675
+ `On Your Network (IPv6): ${ colors . info ( useColor , networkUrlIPv6 ) } `
675
676
) ;
676
677
}
677
678
@@ -716,12 +717,9 @@ class Server {
716
717
}
717
718
718
719
if ( this . options . open || this . options . openPage ) {
719
- const uri =
720
- localhostForTerminal ||
721
- networkUrlForTerminalIPv4 ||
722
- networkUrlForTerminalIPv6 ;
720
+ const openTarget = prettyPrintUrl ( this . hostname || 'localhost' ) ;
723
721
724
- runOpen ( uri , this . options , this . logger ) ;
722
+ runOpen ( openTarget , this . options , this . logger ) ;
725
723
}
726
724
}
727
725
@@ -740,7 +738,7 @@ class Server {
740
738
. then ( ( port ) => {
741
739
this . port = port ;
742
740
743
- return this . server . listen ( port , hostname , ( err ) => {
741
+ return this . server . listen ( port , hostname , ( error ) => {
744
742
if ( this . options . hot || this . options . liveReload ) {
745
743
this . createSocketServer ( ) ;
746
744
}
@@ -752,17 +750,17 @@ class Server {
752
750
this . showStatus ( ) ;
753
751
754
752
if ( fn ) {
755
- fn . call ( this . server , err ) ;
753
+ fn . call ( this . server , error ) ;
756
754
}
757
755
758
756
if ( typeof this . options . onListening === 'function' ) {
759
757
this . options . onListening ( this ) ;
760
758
}
761
759
} ) ;
762
760
} )
763
- . catch ( ( err ) => {
761
+ . catch ( ( error ) => {
764
762
if ( fn ) {
765
- fn . call ( this . server , err ) ;
763
+ fn . call ( this . server , error ) ;
766
764
}
767
765
} )
768
766
) ;
0 commit comments