VSCode:如何将打开新终端作为任务的一部分?

13

Visual Studio Code最新更新,允许运行任务并在拆分终端中打开它们。这很棒,但我想要更多的东西来完美地实现它。

我希望能够通过一个任务打开3个终端。一个用于我的NPM构建,一个用于我的后端MAVEN构建,第三个只是一个空的新终端,我可以在需要时用于git命令。

我似乎找不到一种方法告诉VSC运行一个任务,该任务只是打开一个没有提供命令的新终端以供使用。我甚至愿意用一个简单的命令像"node -v"来开始它,只要该面板在运行后仍然可用即可。现在它想在运行后关闭它。

这是我的任务设置:我设立了一个构建任务,它依赖于其他两个任务。我计划添加第三个任务,它将打开新的终端:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Maven and NPM",
      "dependsOn": [ "maven", "npm" ],
      "group": {
        "kind": "build",
        "isDefault": true,
      },
    },
    {
      "label": "maven",
      "command": "...",
      "type": "shell",
      "presentation": {
        "reveal": "always",
        "group": "build"
      },
      "options": {
        "cwd": "${workspaceRoot}/server"
      }
    },
    {
      "label": "npm",
      "type": "shell",
      "command": "ng serve --port 4203 --proxy-config proxy.conf.json",
      "presentation": {
        "reveal": "always",
        "group": "build"
      },
      "options": {
        "cwd": "${workspaceRoot}/client-APS"
      }
    }
  ]
}
1个回答

20
以下内容应该有效:
{
    "type": "process",
    "label": "terminal",
    "command": "/bin/bash",  // <-- your shell here
    "args": [
        "-l"  // login shell for bash
    ],
    "problemMatcher": [],
    "presentation": {
        "echo": false,  // silence "Executing task ..."
        "focus": true,
        "group": "build",  // some arbitrary name for the group
        "panel": "dedicated"
    },
    "runOptions": {
        "runOn": "folderOpen"
    }
}
我试图实现类似的功能,然后无意中发现了这个解决方案:在打开文件夹时,我自动启动(并将焦点设置在)终端,并且使用相同的 presentation.group 的其他任务在运行时将被放置在拆分终端中(根据其 presentation.panel 是新的还是重用已有的拆分终端)。
(对于您的情况,-l 选项可能或可能不需要,具体取决于您的设置为 terminal.integrated.shell*terminal.integrated.automationShell*terminal.integrated.inheritEnv。关于如何设置 shell 环境的内容,可以参考这个 issue )。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接