From 9e7833c05b3a168a4da2b2eb351135710d5e3086 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Sun, 19 Nov 2017 15:18:38 -0500 Subject: [PATCH] Use Node's spawn behavior except default to a shell on Windows --- packages/react-dev-utils/crossSpawn.js | 32 ++++++++++++++++++++++++- packages/react-dev-utils/openBrowser.js | 2 +- packages/react-dev-utils/package.json | 1 - 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/react-dev-utils/crossSpawn.js b/packages/react-dev-utils/crossSpawn.js index b772086f21a..dddef818b87 100644 --- a/packages/react-dev-utils/crossSpawn.js +++ b/packages/react-dev-utils/crossSpawn.js @@ -7,6 +7,36 @@ 'use strict'; -var crossSpawn = require('cross-spawn'); +const { spawn } = require('child_process'); + +function crossSpawn(file, args, options) { + if (typeof file !== 'string' || file.length === 0) { + throw new TypeError('"file" argument must be a non-empty string'); + } + + if (Array.isArray(args)) { + args = args.slice(0); + } else if ( + args !== undefined && + (args === null || typeof args !== 'object') + ) { + throw new TypeError('Incorrect value of args option'); + } else { + options = args; + args = []; + } + + if (options === undefined) { + options = {}; + } else if (options === null || typeof options !== 'object') { + throw new TypeError('"options" argument must be an object'); + } + + // Default to using a shell on Windows + if (options.shell === undefined && process.platform === 'win32') { + options.shell = true; + } + return spawn(file, args, options); +} module.exports = crossSpawn; diff --git a/packages/react-dev-utils/openBrowser.js b/packages/react-dev-utils/openBrowser.js index cb9f32c6a85..d6a459eab0e 100644 --- a/packages/react-dev-utils/openBrowser.js +++ b/packages/react-dev-utils/openBrowser.js @@ -9,7 +9,7 @@ var chalk = require('chalk'); var execSync = require('child_process').execSync; -var spawn = require('cross-spawn'); +var spawn = require('./crossSpawn'); var opn = require('opn'); // https://github.com/sindresorhus/opn#app diff --git a/packages/react-dev-utils/package.json b/packages/react-dev-utils/package.json index 54606f33fe8..a1def4bfa10 100644 --- a/packages/react-dev-utils/package.json +++ b/packages/react-dev-utils/package.json @@ -39,7 +39,6 @@ "address": "1.0.3", "babel-code-frame": "6.26.0", "chalk": "1.1.3", - "cross-spawn": "5.1.0", "detect-port-alt": "1.1.3", "escape-string-regexp": "1.0.5", "filesize": "3.5.11",