nodejs中执行npm install命令终端信息获取 ?

执行npm install

require("child_process").execSync("npm install", {stdio: [0, 1, 2]});

终端信息
image.png

有没有办法实时监听获取上图中终端输出的信息

阅读 4.3k
3 个回答

spawn可以边执行边输出,但是测试了npm和yarn, 输出的都是一些安装包前的固定提示信息,并不会输出像进度条那些内容。

const cp = require('child_process');

const ls = cp.spawn('bash.exe', ['npm', 'install']);

ls.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
    console.log(`stderr: ${data}`);
});

ls.on('close', (data) => {
    console.log(`close: ${data}`);
});

ls.on('error', (data) => {
    console.log(`error: ${data}`);
});

yarn
image.png

在 nodejs 的 docs 里就有现成的例子,改一下就可以满足你现在的需求

const { spawn } = require('child_process');

const subprocess = spawn('npm install');

subprocess.stdout.on('data', (data) => {
  console.log(`Received chunk ${data}`);
});

这样就可以了吧:

require("child_process").execSync("npm install", { stdio: 'inherit' })

或者直接调用 toString 方法:require("child_process").execSync("npm install").toString()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题