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?
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With