From 352a05f21e93daa467534c668da2019c0c69a436 Mon Sep 17 00:00:00 2001 From: shrynx Date: Tue, 20 Mar 2018 01:02:42 +0530 Subject: [PATCH] Allow specifying which browser to open (#978) --- packages/core/parcel/src/cli.js | 10 +++++++--- packages/core/parcel/src/utils/openInBrowser.js | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 packages/core/parcel/src/utils/openInBrowser.js diff --git a/packages/core/parcel/src/cli.js b/packages/core/parcel/src/cli.js index 2dcee79d977..f70f24539b9 100755 --- a/packages/core/parcel/src/cli.js +++ b/packages/core/parcel/src/cli.js @@ -25,7 +25,10 @@ program .option('--https', 'serves files over HTTPS') .option('--cert ', 'path to certificate to use with HTTPS') .option('--key ', 'path to private key to use with HTTPS') - .option('--open', 'automatically open in default browser') + .option( + '--open [browser]', + 'automatically open in specified browser, defaults to default browser' + ) .option( '-d, --out-dir ', 'set the output directory. defaults to "dist"' @@ -162,10 +165,11 @@ async function bundle(main, command) { if (command.name() === 'serve') { const server = await bundler.serve(command.port || 1234, command.https); if (command.open) { - require('opn')( + await require('./utils/openInBrowser')( `${command.https ? 'https' : 'http'}://localhost:${ server.address().port - }` + }`, + command.open ); } } else { diff --git a/packages/core/parcel/src/utils/openInBrowser.js b/packages/core/parcel/src/utils/openInBrowser.js new file mode 100644 index 00000000000..afb4ae1d580 --- /dev/null +++ b/packages/core/parcel/src/utils/openInBrowser.js @@ -0,0 +1,14 @@ +const opn = require('opn'); + +const openInBrowser = async (url, browser) => { + try { + const options = typeof browser === 'string' ? {app: browser} : undefined; + + await opn(url, options); + } catch (err) { + console.error(`Unexpected error while opening in browser: ${browser}`); + console.error(err); + } +}; + +module.exports = openInBrowser;