Npm node js cli STDOUT STDERR output exec和spawn命令
我正在寻找一个关于Npm node js cli STDOUT STDERR output exec和spawn命令,npm,stdout,stderr,npm-cli,Npm,Stdout,Stderr,Npm Cli,我正在寻找一个关于stdout和stderr在开发npmcli模块时如何工作的明确答案 我想打印出所有内容,就像我使用child\u process.spawn运行命令时一样 我用--progress选项输出了git clone命令。现在我想输出npm install命令,但它只打印最后的字符串 很高兴能有一个明确的答案,说明这通常是如何工作的,以及最佳实践是什么 这项工作: import*作为“child_进程”的cp; const child=cp.spawn('git',['clone',
stdout
和stderr
在开发npmcli模块时如何工作的明确答案
我想打印出所有内容,就像我使用child\u process.spawn运行命令时一样
我用--progress
选项输出了git clone
命令。现在我想输出npm install
命令,但它只打印最后的字符串
很高兴能有一个明确的答案,说明这通常是如何工作的,以及最佳实践是什么
这项工作:
import*作为“child_进程”的cp;
const child=cp.spawn('git',['clone','ssh://myrepo...","进度",;
child.stdout.setEncoding('utf8');
child.stdout.on('data',(chunk)=>{
process.stdout.write(`${chunk}`);
});
child.stderr.setEncoding('utf8');
child.stderr.on('data',(chunk)=>{
process.stdout.write(`${chunk}`);
});
//顺便问一下,为什么git在STDERR中输出,而不是在STDOUT中输出?
然而,这不起作用
const child=cp.spawn('npm',['i','mymodule']);
是否有办法使每个命令都能执行此操作?您可以关闭事件处理程序和编码设置,并告诉spawn()
将stdio传递给父进程
const child = cp.spawn('npm', ['i', 'mymodule'], {stdio: 'inherit'});
只要像在第一个示例中那样添加侦听器,这两个命令就可以为我工作。如果我忽略事件处理程序,您的第二个示例将不再适用于我。了解您运行的平台、您使用的node和npm的版本以及可以剪切并粘贴到文件中进行测试的完整不工作示例将非常有趣。(另外,文件的名称是什么?您是否使用.mjs
扩展名或其他东西使导入
工作?此文件是在其他地方加载的模块中还是在基本级别脚本中?我使用的是Typescript(tsc v3.9.5)。这就是为什么我使用import
。节点v14.2.0。Linux初级操作系统5.1.7 Hera。Filename是使用#从cli.ts
编译的cli.js
/usr/bin/env node
。是否由于以其他方式格式化,npm
命令的输出不显示?我注意到当我使用{stdio:'inherit'}