在节点中生成未在终端中显示动画

时间:2018-01-03 20:51:49

标签: node.js

在终端中使用npm install marantz-avr时,您会在终端中看到“过程动画”。

但是当我通过以下方式执行npm install

let spawn = require('child_process').spawn;

let npm = spawn('npm', ['install', 'marantz-avr', '--no-save']);

npm.stdout.on('data', function (data) {
    process.stdout.write(data);
});

npm.stderr.on('data', function (data) {
    process.stdout.write(data);
});

未显示动画。仅显示“普通文本”。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在选项中传递{ stdio: 'inherit' }似乎是这样做的,尽管我很好奇为什么你的代码和/或管道到父stdout / stderr上都没有用。

https://nodejs.org/api/child_process.html#child_process_options_stdio

let npm = spawn('npm', ['install', 'marantz-avr', '--no-save'], { stdio: 'inherit' });

您还需要确保子进程在父进程退出之前退出:

function onExit () {
  npm.kill('SIGINT');
}
process.on('SIGINT', onExit);
process.on('SIGTERM', onExit);
process.on('exit', onExit);