implement --dev-port flag - fixes #381

This commit is contained in:
Rich Harris
2018-08-30 19:46:14 -04:00
parent 8c2688b1be
commit 54da524467
2 changed files with 13 additions and 6 deletions

View File

@@ -29,6 +29,8 @@ class Watcher extends EventEmitter {
} }
port: number; port: number;
closed: boolean; closed: boolean;
dev_port: number;
live: boolean; live: boolean;
hot: boolean; hot: boolean;
@@ -50,6 +52,7 @@ class Watcher extends EventEmitter {
app = locations.app(), app = locations.app(),
dest = locations.dest(), dest = locations.dest(),
routes = locations.routes(), routes = locations.routes(),
'dev-port': dev_port,
live, live,
hot, hot,
bundler, bundler,
@@ -60,6 +63,7 @@ class Watcher extends EventEmitter {
app: string, app: string,
dest: string, dest: string,
routes: string, routes: string,
'dev-port': number,
live: boolean, live: boolean,
hot: boolean, hot: boolean,
bundler?: string, bundler?: string,
@@ -74,6 +78,7 @@ class Watcher extends EventEmitter {
this.port = port; this.port = port;
this.closed = false; this.closed = false;
this.dev_port = dev_port;
this.live = live; this.live = live;
this.hot = hot; this.hot = hot;
@@ -120,11 +125,11 @@ class Watcher extends EventEmitter {
mkdirp.sync(`${dest}/client`); mkdirp.sync(`${dest}/client`);
if (this.bundler === 'rollup') copy_shimport(dest); if (this.bundler === 'rollup') copy_shimport(dest);
const dev_port = await ports.find(10000); if (!this.dev_port) this.dev_port = await ports.find(10000);
try { try {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ routes, dev_port: this.dev_port });
} catch (err) { } catch (err) {
this.emit('fatal', <events.FatalEvent>{ this.emit('fatal', <events.FatalEvent>{
message: err.message message: err.message
@@ -132,7 +137,7 @@ class Watcher extends EventEmitter {
return; return;
} }
this.dev_server = new DevServer(dev_port); this.dev_server = new DevServer(this.dev_port);
this.filewatchers.push( this.filewatchers.push(
watch_dir( watch_dir(
@@ -145,11 +150,11 @@ class Watcher extends EventEmitter {
}, },
() => { () => {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ routes, dev_port: this.dev_port });
try { try {
const routes = create_routes(); const routes = create_routes();
create_main_manifests({ routes, dev_port }); create_main_manifests({ routes, dev_port: this.dev_port });
} catch (err) { } catch (err) {
this.emit('error', <events.ErrorEvent>{ this.emit('error', <events.ErrorEvent>{
message: err.message message: err.message

View File

@@ -11,12 +11,14 @@ prog.command('dev')
.describe('Start a development server') .describe('Start a development server')
.option('-p, --port', 'Specify a port') .option('-p, --port', 'Specify a port')
.option('-o, --open', 'Open a browser window') .option('-o, --open', 'Open a browser window')
.option('--dev-port', 'Specify a port for development server')
.option('--hot', 'Use hot module replacement (requires webpack)', true) .option('--hot', 'Use hot module replacement (requires webpack)', true)
.option('-l --live', 'Reload on changes if not using --hot', true) .option('--live', 'Reload on changes if not using --hot', true)
.option('--bundler', 'Specify a bundler (rollup or webpack)') .option('--bundler', 'Specify a bundler (rollup or webpack)')
.action(async (opts: { .action(async (opts: {
port: number, port: number,
open: boolean, open: boolean,
'dev-port': number,
live: boolean, live: boolean,
hot: boolean, hot: boolean,
bundler?: string bundler?: string