Launch the packager with `react-native run-android` on Windows

Summary:
Adds support for launching the packager in a new window on Windows.

**Test plan (required)**

Tested that the packager is launched in a completely independent process. This means that exiting the `react-native run-android` command should not close the packager window and it should exit properly when completed even if the packager window is still opened. Pretty much made sure it behaves exactly like on mac.

Also tested that an error in the packager will not close the window immediately to show the error stack trace.
Closes https://github.com/facebook/react-native/pull/7129

Differential Revision: D3240628

Pulled By: mkonicek

fb-gh-sync-id: 007582250536481d2b2376f9a201f8f415fc1080
fbshipit-source-id: 007582250536481d2b2376f9a201f8f415fc1080
This commit is contained in:
Janic Duplessis 2016-04-29 04:13:30 -07:00 committed by Facebook Github Bot 0
parent 3a5457cd7c
commit 891b87e7fb
2 changed files with 20 additions and 8 deletions

View File

@ -159,8 +159,12 @@ function buildAndRun(args, reject) {
function startServerInNewWindow() {
var yargV = require('yargs').argv;
const scriptFile = /^win/.test(process.platform) ?
'launchPackager.bat' :
'launchPackager.command';
const launchPackagerScript = path.resolve(
__dirname, '..', '..', 'packager', 'launchPackager.command'
__dirname, '..', '..', 'packager', scriptFile
);
if (process.platform === 'darwin') {
@ -176,13 +180,9 @@ function startServerInNewWindow() {
return child_process.spawn('sh', [launchPackagerScript],{detached: true});
} else if (/^win/.test(process.platform)) {
console.log(chalk.yellow('Starting the packager in a new window ' +
'is not supported on Windows yet.\nPlease start it manually using ' +
'\'react-native start\'.'));
console.log('We believe the best Windows ' +
'support will come from a community of people\nusing React Native on ' +
'Windows on a daily basis.\n' +
'Would you be up for sending a pull request?');
return child_process.spawn(
'cmd.exe', ['/C', 'start', launchPackagerScript], {detached: true, stdio: 'ignore'}
);
} else {
console.log(chalk.red(`Cannot start the packager. Unknown platform ${process.platform}`));
}

View File

@ -0,0 +1,12 @@
:: Copyright (c) 2015-present, Facebook, Inc.
:: All rights reserved.
::
:: This source code is licensed under the BSD-style license found in the
:: LICENSE file in the root directory of this source tree. An additional grant
:: of patent rights can be found in the PATENTS file in the same directory.
@echo off
title React Packager
node "%~dp0..\local-cli\cli.js" start
pause
exit