我试过使用stdoutpipe and stderrpipe,如下所示.
shell := exec.Command("npm", args...)
shell.Dir = cwd
outpipe, _ := shell.StdoutPipe()
errpipe, _ := shell.StderrPipe()
shell.Start()
go func(pipe io.ReadCloser) {
reader := bufio.NewReader(pipe)
line, err := reader.ReadString('\n')
for err == nil {
fmt.Println(string(line))
line, err = reader.ReadString('\n')
}
fmt.Println("exited")
}(outpipe)
go func(pipe io.ReadCloser) {
reader := bufio.NewReader(pipe)
line, err := reader.ReadString('\n')
for err == nil {
fmt.Println(string(line))
line, err = reader.ReadString('\n')
}
fmt.Println("exited")
}(errpipe)
err := shell.Wait()
if err != nil {
fmt.Println(err)
}
However I only get output:个
added 87 packages, and audited 88 packages in 3s
9 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
当您从控制台运行NPM Install时,如何获得安装进度条?
我也try 过使用类似下面的解决方案,并在运行shell.run()后打印缓冲区,但它也会产生与上面相同的输出.
shell := exec.Command(command, args...)
shell.Dir = cwd
var stderr, stdout bytes.Buffer
shell.Stderr = &stderr
shell.Stdout = &stdout
return shell, &stdout, &stderr