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