我如何显示节点 chid_process 命令的进度?

How can i show progress of node chid_process commands?

我必须在 UI 上显示节点 chid_process 命令的进度。我无法使用任何 js 库(如进度条)跟踪命令的进度。 我如何在 UI 上显示 "git clone" 进度,以便用户了解进程的状态?

试试 farmhand 包。

正如描述所说,它是对 child_process 的抽象化,使得在后台 运行 函数变得容易,获取其进度、结果并在必要时取消。

希望对您有所帮助!

如果您的意思是一般情况而不是您为此目的专门定义的函数,并且想 运行 单独作为子进程,您真的不能 除非 子进程本身通过例如 STDOUT 提供此信息。

如果是这样,您只能获取此原始输出,然后必须对其进行解析以找到可用于指示进度的内容。这当然有它自己的怪癖,因为输出通常是缓冲的,这需要您仔细考虑如何解析缓冲区。

除此之外,您还可以 运行 处理将来输出格式或顺序发生变化,导致您的程序无法再找到所需关键信息的情况。

git 的情况下,本身确实没有进展,只有阶段 - 这很好并且可以作为一种进展形式(第 1 阶段,共 4 阶段等)。

要获取输出,您可以使用类似的东西:

const spawn = require("child_process").spawn;
const child = spawn("git" , ["clone", "https://some.rep"]);

child.stdout.on("data", data => {
  // parse data here...
});

...

stderr 也是如此。有关详细信息,请参阅 Node documentation