How to read child_process.spawnSync stdout with stdio option 'inherit' How to read child_process.spawnSync stdout with stdio option 'inherit' node.js node.js

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].