From b56b2a9f3c3ff6db2dd27a086b409a8d4af6f2bd Mon Sep 17 00:00:00 2001 From: Alexander Suevalov Date: Mon, 15 Jan 2018 10:06:55 +0100 Subject: [PATCH] Add ability to specify HMR hostname (#492) * Add ability to specify HMR hostname * Add --hmr-hostname option for cli.js --- src/Bundler.js | 3 ++- src/builtins/hmr-runtime.js | 3 ++- src/cli.js | 4 ++++ src/packagers/JSPackager.js | 4 +++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Bundler.js b/src/Bundler.js index 4e79bcee482..864632b512b 100644 --- a/src/Bundler.js +++ b/src/Bundler.js @@ -67,7 +67,8 @@ class Bundler extends EventEmitter { hmr: typeof options.hmr === 'boolean' ? options.hmr : watch, logLevel: typeof options.logLevel === 'number' ? options.logLevel : 3, mainFile: this.mainFile, - hmrPort: options.hmrPort || 0 + hmrPort: options.hmrPort || 0, + hmrHostname: options.hmrHostname || '' }; } diff --git a/src/builtins/hmr-runtime.js b/src/builtins/hmr-runtime.js index 82565983aa3..d81906e913a 100644 --- a/src/builtins/hmr-runtime.js +++ b/src/builtins/hmr-runtime.js @@ -15,7 +15,8 @@ function Module() { module.bundle.Module = Module; if (!module.bundle.parent && typeof WebSocket !== 'undefined') { - var ws = new WebSocket('ws://' + location.hostname + ':{{HMR_PORT}}/'); + var hostname = '{{HMR_HOSTNAME}}' || location.hostname; + var ws = new WebSocket('ws://' + hostname + ':{{HMR_PORT}}/'); ws.onmessage = function(event) { var data = JSON.parse(event.data); diff --git a/src/cli.js b/src/cli.js index 9dc5f71198f..d8d15587c8e 100755 --- a/src/cli.js +++ b/src/cli.js @@ -18,6 +18,10 @@ program 'set the port to serve HMR websockets, defaults to random', parseInt ) + .option( + '--hmr-hostname ', + 'set the hostname of HMR websockets, defaults to location.hostname of current window' + ) .option('--https', 'serves files over HTTPS') .option('-o, --open', 'automatically open in default browser') .option( diff --git a/src/packagers/JSPackager.js b/src/packagers/JSPackager.js index 1fabad6103a..6e216195e32 100644 --- a/src/packagers/JSPackager.js +++ b/src/packagers/JSPackager.js @@ -75,7 +75,9 @@ class JSPackager extends Packager { // Asset ids normally start at 1, so this should be safe. await this.writeModule( 0, - hmr.replace('{{HMR_PORT}}', this.options.hmrPort) + hmr + .replace('{{HMR_PORT}}', this.options.hmrPort) + .replace('{{HMR_HOSTNAME}}', this.options.hmrHostname) ); entry.push(0); }