diff --git a/packages/core/parcel-bundler/src/Bundler.js b/packages/core/parcel-bundler/src/Bundler.js index 4e79bcee482..864632b512b 100644 --- a/packages/core/parcel-bundler/src/Bundler.js +++ b/packages/core/parcel-bundler/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/packages/core/parcel-bundler/src/builtins/hmr-runtime.js b/packages/core/parcel-bundler/src/builtins/hmr-runtime.js index 82565983aa3..d81906e913a 100644 --- a/packages/core/parcel-bundler/src/builtins/hmr-runtime.js +++ b/packages/core/parcel-bundler/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/packages/core/parcel-bundler/src/cli.js b/packages/core/parcel-bundler/src/cli.js index 9dc5f71198f..d8d15587c8e 100755 --- a/packages/core/parcel-bundler/src/cli.js +++ b/packages/core/parcel-bundler/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/packages/core/parcel-bundler/src/packagers/JSPackager.js b/packages/core/parcel-bundler/src/packagers/JSPackager.js index 1fabad6103a..6e216195e32 100644 --- a/packages/core/parcel-bundler/src/packagers/JSPackager.js +++ b/packages/core/parcel-bundler/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); }