I’m working on a nodejs project recently, and need to execute a command by using child_process.execSync().
The ideal solution should:
- Support color output from command, which generally means the stdout/stderr should be a tty
- Be testable, which means I can get the command output and verify
From the node.js documentation, I can use options.stdio to change stdio fds in child process.
For convenience, options.stdio may be one of the following strings:
‘pipe’ – equivalent to [‘pipe’, ‘pipe’, ‘pipe’] (the default)
‘ignore’ – equivalent to [‘ignore’, ‘ignore’, ‘ignore’]
‘inherit’ – equivalent to [process.stdin, process.stdout, process.stderr] or [0,1,2]
I started from the default behaviour – using pipe, which returns the console output after child process finishes. But it doesn’t support colours by default because piped stdout/stderr is not a tty. Continue reading “Capture console output when using child_process.execSync in node.js”