Handle Node.js spawnSync errors
gulp, node.js, npm, spawn
Solution
In Node documentation regarding `options.stdio` it says
By default, the child's stdin, stdout, and stderr are redirected to corresponding subprocess.stdin, subprocess.stdout, and subprocess.stderr.
In your options use
{ stdio: ['inherit', 'inherit', 'pipe'] }
And then check for `stderr`. An example:
var spawn = childProcess.spawnSync('node myScript.js', { stdio: ['inherit', 'inherit', 'pipe'] })
if (spawn.stderr) {
console.log(Error(spawn.stderr))
process.exitCode = 1;
}
Problem
I'm trying to run "npm publish" from a gulp task. It works, but I want to handle any error that npm command itself throws. If I execute this code: ``` var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'inherit' }) ``` cmd.stdout and cmd.stderr are null. If I execute ``` var cmd = spawnSync('npm.cmd', ['publish', packageDir], { stdio: 'pipe' }) ``` cmd.stdout and cmd.stderr are buffers, like `<Buffer 6e 70 6d 20 45 52...` What am I missing here?