我試過使用stdoutpipe 和 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)
}
但是我只得到輸出:
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 時獲得的安裝進度條?
我也嘗試過使用下面的解決方案并在運行 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
uj5u.com熱心網友回復:
解決了感謝@Adrian的評論
cmd := exec.Command("npm", args...)
cmd.Dir = cwd
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
重定向到os 的 stdout 和 stderr就是訣竅。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535744.html
標籤:去npm管道命令行界面
