How to read child_process.spawnSync stdout with stdio option 'inherit'
If you don't use 'pipe'
then childProcess.output
will not contain the output.
var cp = require('child_process');var command = 'echo';var args = ['hello', 'world'];var childProcess = cp.spawnSync(command, args, { cwd: process.cwd(), env: process.env, stdio: 'pipe', encoding: 'utf-8'});console.log(childProcess.output); // [ null, 'hello world\n', '' ]
This is sorta kinda indicated in the documentation for child.stdout
and elsewhere, but it's not entirely unambiguous. (By all means, if you wish to see it improved, open a pull request against the Node.js repo.)
Use this for in-process displaying of progress:
var cp = require('child_process');var command = 'echo';var args = ['hello', 'world'];var childProcess = cp.spawnSync(command, args, { cwd: process.cwd(), env: process.env, stdio: [process.stdin, process.stdout, process.stderr], encoding: 'utf-8'});
So you replace string 'pipe'
with the array [process.stdin, process.stdout, process.stderr]
.