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

时间:2018-09-04 12:09:23

标签: node.js child-process

我必须在UI上显示节点chid_process命令的进度。我无法使用诸如progress-bar之类的任何js库来跟踪命令的进度。 如何在UI上显示“ git clone”进度,以便用户知道进程状态?

2 个答案:

答案 0 :(得分:3)

如果您不是为了一般目的而不是专门为此目的定义的功能,而是想作为子进程单独运行,那么您真的不能除非子进程本身通过以下方式提供此信息:标准输出。

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

最重要的是,您可能会遇到将来输出格式或顺序发生更改的情况,以致您的程序无法再找到所需的关键信息。

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

答案 1 :(得分:0)

尝试使用farmhand软件包。

正如描述所言,这是对child_process的一种抽象,它使在后台运行函数,获得其进度,结果以及在必要时取消它变得容易。

希望这会有所帮助!