要在 Mac 上的 VS Code 中运行相同的项目命令,请将其在 .vscode/tasks.json 中定义为工作区任务。然后从命令面板或“终端”菜单启动它,而无需在终端中重复输入。本指南以 npm test 为例;请将其替换为您项目已支持的命令。VS Code 任务需要打开工作区文件夹,因此首先请在 VS Code 中打开项目文件夹。Visual Studio Code: Integrate with External Tools via Tasks

在项目中创建任务文件

在 VS Code 中,按 Shift+Command+P 打开命令面板,运行 Tasks: Configure Task(任务:配置任务),如果 VS Code 提供了该选项,请选择 Create tasks.json file from template(从模板创建 tasks.json 文件)。选择 Others(其他)以创建自定义任务。如果 tasks.json 已经存在,直接打开并编辑它,而不是创建第二个。该文件位于项目的 .vscode 文件夹中;将其与项目一起提交可供使用 VS Code 的协作者使用。Visual Studio Code: Integrate with External Tools via Tasks

对于本示例,请将以下配置放入 .vscode/tasks.json:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run project tests",
      "type": "shell",
      "command": "npm",
      "args": ["test"],
      "options": {
        "cwd": "${workspaceFolder}"
      },
      "presentation": {
        "reveal": "always",
        "panel": "dedicated"
      }
    }
  ]
}

任务标签(label)是您在 VS Code 中选择的名称。在这里,command 和 args 将示例表示为可执行文件 npm 后跟其 test 参数。更改这些内容以匹配您项目现有的命令:例如,命令行工具及其参数,或现有脚本。该任务不会安装依赖项、创建项目脚本或决定命令应执行的操作。请先查看项目自己的文档或脚本。cwd 将工作目录设置为作为工作区打开的文件夹;当命令需要查找相对于该文件夹的项目文件时,这非常重要。Visual Studio Code: Integrate with External Tools via Tasks

从 Mac 界面再次运行它

保存 tasks.json。使用 Shift+Command+P 打开命令面板,运行 Tasks: Run Task(任务:运行任务),然后选择 Run project tests。您也可以使用 终端 > 运行任务。任务完成后,重复这些步骤并选择相同的标签。配置好的任务将在 VS Code 的集成终端中运行。Visual Studio Code: Integrate with External Tools via Tasks

在该示例中,reveal: always 会在任务运行时将终端面板带到最前端。panel: dedicated 会在后续运行中为该任务复用同一个终端,使其输出与其他任务分开。若要将输出保持在后台,请将 reveal 设置为 never;您需要自行调出终端面板进行查看。这些选项仅影响呈现方式,不影响命令的行为或其是否执行成功。Visual Studio Code: Integrate with External Tools via Tasks

使配置与命令的运行方式相匹配

当命令依赖于 shell 行为时,请使用 type: shell。对于应直接启动可执行文件的命令,type: process 可以避免 shell 解释。VS Code 对这两种任务类型均有说明;请根据所需的命令和参数进行选择。对于 shell 任务,空格和特殊字符可能需要加引号。像示例中那样分离可执行文件和参数有助于避免将整行命令嵌入到一个字符串中,不过在需要的地方仍然适用特定于 shell 的引号规则。Visual Studio Code: Integrate with External Tools via Tasks

如果命令应在子文件夹中启动,请将 cwd 更改为 ${workspaceFolder} 下的路径,例如 ${workspaceFolder}/client。${workspaceFolder} 指代在 VS Code 中打开的文件夹,且 macOS 路径使用正斜杠。如果您在 shell 任务中使用变量,请记住替换操作不会自动添加引号;包含空格的路径可能需要适合 shell 的引号。Visual Studio Code: Variables Reference

如果任务在“终端”窗口中可以工作但在 VS Code 中失败,请检查 VS Code 使用的环境中是否有该可执行文件,以及所选的工作目录是否包含预期的文件。VS Code 允许通过 terminal.integrated.automationProfile.* 单独配置自动化 shell,或通过 options.shell 配置任务特定的 shell;任务不能保证与已打开的交互式终端具有完全相同的环境。Visual Studio Code: Integrate with External Tools via Tasks

任务是一种可重复调用命令并检查其终端输出的方法。它不会创建项目命令、修复失败的命令,也不会自动推断项目使用的所有命令。请从已可用于该项目的命令开始,然后调整其任务标签、参数、工作目录和终端显示,以契合您的工作习惯。

来源