实时管道节点标准输出

Pipe Node stdout in realtime

我有一个 spawn 过程 运行 一个 docker pull 并且我正在使用以下内容:

const proc = spawn('docker', [ 'pull', 'some/container' ], { env: process.env, cwd: process.env.HOME })
proc.stdout.pipe(process.stdout)

它在运行时会分解并下载各个 SHA,并且上面的工作 漂亮 很好,但是,它会将每个响应放在一个新行上。我很好奇是否有一种方法可以模拟 "normal" 输出,以便每一行在拉取图像时写入。

如果您只是连接到 process.stdout,那么您可以像这样设置 stdio 选项:

const proc = spawn('docker', [
  'pull',
  'some/container'
], {
  env: process.env,
  cwd: process.env.HOME,
  stdio: ['pipe', process.stdout, 'pipe']
});

最终结果是 docker 现在会将其标准输出视为 TTY(当然假设此节点脚本是 运行 来自 terminal/pty)而不是管道。