Skip to content

Commit

Permalink
Only open Chrome tab if BROWSER is missing or is Chrome (facebook#1247)
Browse files Browse the repository at this point in the history
  • Loading branch information
gaearon authored and randycoulman committed May 8, 2017
1 parent e8987ae commit 39a2cd0
Showing 1 changed file with 28 additions and 3 deletions.
31 changes: 28 additions & 3 deletions packages/react-dev-utils/openBrowser.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,32 @@
var execSync = require('child_process').execSync;
var opn = require('opn');

// https://github.com/sindresorhus/opn#app
var OSX_CHROME = 'google chrome';

function openBrowser(url) {
if (process.platform === 'darwin') {
// Attempt to honor this environment variable.
// It is specific to the operating system.
// See https://github.com/sindresorhus/opn#app for documentation.
const browser = process.env.BROWSER;

// Special case: BROWSER="none" will prevent opening completely.
if (browser === 'none') {
return false;
}

// If we're on OS X, the user hasn't specifically
// requested a different browser, we can try opening
// Chrome with AppleScript. This lets us reuse an
// existing tab when possible instead of creating a new one.
const shouldTryOpenChromeWithAppleScript = (
process.platform === 'darwin' && (
typeof browser !== 'string' ||
browser === OSX_CHROME
)
);

if (shouldTryOpenChromeWithAppleScript) {
try {
// Try our best to reuse existing tab
// on OS X Google Chrome with AppleScript
Expand All @@ -25,11 +49,12 @@ function openBrowser(url) {
// Ignore errors.
}
}

// Fallback to opn
// (It will always open new tab)
try {
var option = {app: process.env.BROWSER};
opn(url, option).catch(() => {}); // Prevent `unhandledRejection` error.
var options = {app: browser};
opn(url, options).catch(() => {}); // Prevent `unhandledRejection` error.
return true;
} catch (err) {
return false;
Expand Down

0 comments on commit 39a2cd0

Please sign in to comment.