@@ -83,7 +83,7 @@ function clearConsole() {
8383  isFirstClear  =  false ; 
8484} 
8585
86- function  setupCompiler ( port ,  protocol )  { 
86+ function  setupCompiler ( host ,   port ,  protocol )  { 
8787  // "Compiler" is a low-level interface to Webpack. 
8888  // It lets us listen to some events and provide our own custom messages. 
8989  compiler  =  webpack ( config ,  handleCompile ) ; 
@@ -108,7 +108,7 @@ function setupCompiler(port, protocol) {
108108      console . log ( ) ; 
109109      console . log ( 'The app is running at:' ) ; 
110110      console . log ( ) ; 
111-       console . log ( '  '  +  chalk . cyan ( protocol  +  '://localhost :'  +  port  +  '/' ) ) ; 
111+       console . log ( '  '  +  chalk . cyan ( protocol  +  '://'    +   host   +   ' :'+  port  +  '/' ) ) ; 
112112      console . log ( ) ; 
113113      console . log ( 'Note that the development build is not optimized.' ) ; 
114114      console . log ( 'To create a production build, use '  +  chalk . cyan ( 'npm run build' )  +  '.' ) ; 
@@ -159,14 +159,14 @@ function setupCompiler(port, protocol) {
159159  } ) ; 
160160} 
161161
162- function  openBrowser ( port ,  protocol )  { 
162+ function  openBrowser ( host ,   port ,  protocol )  { 
163163  if  ( process . platform  ===  'darwin' )  { 
164164    try  { 
165165      // Try our best to reuse existing tab 
166166      // on OS X Google Chrome with AppleScript 
167167      execSync ( 'ps cax | grep "Google Chrome"' ) ; 
168168      execSync ( 
169-         'osascript chrome.applescript '  +  protocol  +  '://localhost :'  +  port  +  '/' , 
169+         'osascript chrome.applescript '  +  protocol  +  '://'    +   host   +   ' :'+  port  +  '/' , 
170170        { cwd : path . join ( __dirname ,  'utils' ) ,  stdio : 'ignore' } 
171171      ) ; 
172172      return ; 
@@ -177,7 +177,7 @@ function openBrowser(port, protocol) {
177177  // Fallback to opn 
178178  // (It will always open new tab) 
179179  try  { 
180-     opn ( protocol  +  '://localhost :'  +  port  +  '/' ) ; 
180+     opn ( protocol  +  '://'    +   host   +   ' :'+  port  +  '/' ) ; 
181181  }  catch  ( err )  { 
182182    // Ignore errors. 
183183  } 
@@ -260,7 +260,7 @@ function addMiddleware(devServer) {
260260  devServer . use ( devServer . middleware ) ; 
261261} 
262262
263- function  runDevServer ( port ,  protocol )  { 
263+ function  runDevServer ( host ,   port ,  protocol )  { 
264264  var  devServer  =  new  WebpackDevServer ( compiler ,  { 
265265    // Silence WebpackDevServer's own logs since they're generally not useful. 
266266    // It will still show compile warnings and errors with this setting. 
@@ -298,7 +298,8 @@ function runDevServer(port, protocol) {
298298      ignored : / n o d e _ m o d u l e s / 
299299    } , 
300300    // Enable HTTPS if the HTTPS environment variable is set to 'true' 
301-     https : protocol  ===  "https"  ? true  : false 
301+     https : protocol  ===  "https"  ? true  : false , 
302+     host : host 
302303  } ) ; 
303304
304305  // Our custom middleware proxies requests to /index.html or a remote API. 
@@ -313,15 +314,16 @@ function runDevServer(port, protocol) {
313314    clearConsole ( ) ; 
314315    console . log ( chalk . cyan ( 'Starting the development server...' ) ) ; 
315316    console . log ( ) ; 
316-     openBrowser ( port ,  protocol ) ; 
317+     openBrowser ( host ,   port ,  protocol ) ; 
317318  } ) ; 
318319} 
319320
320321function  run ( port )  { 
321322  var  protocol  =  process . env . HTTPS  ===  'true'  ? "https"  : "http" ; 
323+   var  host  =  process . env . HOST  ||  'localhost' ; 
322324  checkRequiredFiles ( ) ; 
323-   setupCompiler ( port ,  protocol ) ; 
324-   runDevServer ( port ,  protocol ) ; 
325+   setupCompiler ( host ,   port ,  protocol ) ; 
326+   runDevServer ( host ,   port ,  protocol ) ; 
325327} 
326328
327329// We attempt to use the default port but if it is busy, we offer the user to 
0 commit comments