【发布时间】:2019-03-22 00:14:57
【问题描述】:
我正在从js 脚本生成npm install -g create-react-app。我想得到实时输出的部分,在这里你可以看到包的安装过程的进度。我的意思是:
但是当我执行脚本时,安装时的输出是这样的:
+ create-react-app@2.1.8
added 63 packages from 20 contributors in 4.885s
更新时会这样:
+ create-react-app@2.1.8
updated 1 package in 1.971s
我正在使用的代码:
const run = (cmd, args) => {
return new Promise((resolve, reject) => {
const spawn = require('child_process').spawn;
const command = spawn(cmd, args);
let result = '';
command.stdout.on('data', data => {
result += data.toString()
});
command.on('close', _ => {
resolve(result)
});
command.on('error', err => {
reject(err)
});
})
}
run(npmExecutable, ["install", "-g", "create-react-app"]).then(result => {
console.log(result);
});
那么,有没有可能获得想要的实时输出,在那里你可以看到进度条?
编辑:好吧,根据Mark's answer,我现在可以看到进度条,但是我怎样才能将这个结果(进度条)实时输出到stdout,我的意思是变量?
这是新代码:
const run = (cmd, args) => {
return new Promise((resolve, reject) => {
const spawn = require("child_process").spawn;
const command = spawn(cmd, args, {
stdio: "inherit"
});
command.on("close", _ => {
resolve();
});
command.on("error", err => {
reject(err);
});
});
};
编辑关于重复:我的问题与另一个不同,因为现在我正在尝试使用从另一个问题收到的答案 (cmets) 来解决另一个问题!
【问题讨论】:
-
不,不是。这是该问题的下一个阶段。
标签: javascript node.js npm npm-install child-process