实时管道节点标准输出
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)而不是管道。
我有一个 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)而不是管道。