VSCode API:在终端中运行命令并使用输出

时间:2020-06-05 21:24:18

标签: typescript visual-studio-code vscode-extensions

我目前正在构建VSCode扩展,该扩展在终端中启动shell命令。我想做的是将输出作为字符串获得,但是如果我不想要,则只显示输出(或保持终端打开)。

我可以打开终端,并使用以下代码运行它:


let terminal = vscode.window.createTerminal({
    name: "My Command",
    cwd: cwd,
    hideFromUser: false,
    shellPath: script,
    shellArgs: args,
});
terminal.show()

这很好用,命令运行,我可以在底部的终端中看到输出,但是命令完成后它将立即关闭。有什么方法可以让终端保持打开状态,或以某种方式获取命令输出?我一直在仔细阅读文档,但似乎没有任何东西。

1 个答案:

答案 0 :(得分:0)

在 Windows 上,使用上面注释中的链接,并假设您实际上是想运行 powershell 命令或脚本并接收输出(而不是专门使用终端),这是一种有效的方法:

  import * as cp from "child_process";

  const execShell = (cmd: string) =>
    new Promise<string>((resolve, reject) => {
      cp.exec(cmd, (err, out) => {
        if (err) {
          return resolve(cmd+' error!');
          //or,  reject(err);
        }
        return resolve(out);
      });
    });

  //... show powershell output from 'pwd'...
  context.subscriptions.push(
    vscode.commands.registerCommand('test', async () => {
      const output = await execShell('powershell pwd');
      vscode.window.showInformationMessage(output);
    })
  );