【发布时间】:2021-05-26 19:34:09
【问题描述】:
我正在寻找关于在开发 npm cli 模块时stdout 和stderr 如何工作的明确答案。
我想打印出与child_process.spawn 运行命令时完全相同的所有内容。
我设法输出带有--progress 选项的git clone 命令。现在我想输出npm install 命令,但它只打印最后一个字符串。
如果能就一般情况下如何工作以及最佳做法有哪些明确的答案,我会很高兴。
这行得通:
import * as cp from 'child_process';
const child = cp.spawn('git', ['clone', 'ssh://myrepo...', '--progress']);
child.stdout.setEncoding('utf8');
child.stdout.on('data', (chunk) => {
process.stdout.write(`${chunk}`);
});
child.stderr.setEncoding('utf8');
child.stderr.on('data', (chunk) => {
process.stdout.write(`${chunk}`);
});
// BTW why git is outputing in STDERR and not in STDOUT?
但这不起作用
const child = cp.spawn('npm', ['i', 'mymodule']);
有没有办法让每个命令都可以工作?
【问题讨论】: