我正在寻找关于在开发npm cli模块时如何stdout
工作的明确答案。stderr
我想打印出与运行命令时完全相同的所有内容child_process.spawn
。
我设法输出git clone
带有--progress
选项的命令。现在我想输出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']);
有没有办法让每个命令都能正常工作?