在 Visual Studio Code 中使用“preLaunchTasks”和命名任务

新手上路,请多包涵

根据 文档,可以在调试之前启动程序:

要在每个调试会话开始之前启动任务,请将 preLaunchTask 设置为 tasks.json 中指定的任务之一的 _名称_。

我没有看到“命名”任务的示例语法,但 架构文档 显示了一个名为 taskName 的属性。我尝试使用它将我的 launch.json preLaunchTasks 链接到任务,但它没有用。当我启动我的程序时,Visual Studio Code 报告了这个错误:

找不到独特的任务“启动核心”。确保任务存在并且它具有唯一的名称。

我的自定义“命名”任务看起来像这样:

 {
    "taskName": "launch-core",
    "version": "0.1.0",
    "command": "C:\\utils\\mystuff.exe",
    // The command is a shell script
    "isShellCommand": true,
    // Show the output window only if unrecognized errors occur.
    "showOutput": "silent",
}

然后,我尝试 根据此链接 将属性名称从 taskName 更改为 name 。那也没用。

Intellisense 没有给出如何命名任务的建议。

有人知道如何在 tasks.json 文件中唯一地命名任务吗?语法是什么?物业名称是什么?

最终,我想在我自己的 node.js 应用程序启动之前执行两个或三个 node.js 进程。例如,我想在我的应用程序启动到调试器之前启动以下三个应用程序:

 sh -c 'cd ./manager/ && node manager.js'
sh -c 'cd ./adapter/ && node adapter.js'
sh -c 'cd ./core/ && node core.js'

如果我在 Windows 机器上工作,我的任务可能看起来像这样:

 {
    "taskName": "core-launch",
    "version": "0.1.0",

    // The command is tsc. Assumes that tsc has been installed using npm install -g typescript
    "command": "start",

    // The command is a shell script
    "isShellCommand": true,

    // Show the output window only if unrecognized errors occur.
    "showOutput": "silent",

    // args is the HelloWorld program to compile.
    "args": [
        "ACD-Manager",
        "/B",
        "/D",
        "./manager/",
        "node",
        "manager.js"
        ]
}

上述任务使用 cmd start 能力。我还不确定如何启动多个节点任务而不是一个,但由于这个任务命名问题,我什至无法启动一个任务。

如何在 tasks.json 文件中命名任务?

原文由 Brent Arias 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

所以,如果它仍然相关,或者如果有人发现这个线程有同样的问题,我刚刚弄清楚它是如何工作的:

tasks.json 中,您需要创建一个 “任务”数组- 代码提示将帮助您 - 它包含一个对象数组。在对象内部,您可以拥有 “taskName” 键值对。

例子:

 {
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "args": ["run-script", "webpack"],
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "runwebpack",
            "suppressTaskName": true
        }
    ]
}

就我而言,在运行我的项目之前,我必须运行 npm run-script webpack 命令。在 launch.json 文件中, "preLaunchTask": "runwebpack" 现在可以工作了。

注意:在我的示例中, suppressTaskName 是正确的。省略它或将其设置为 false 将导致 VS Code 在命令后附加 taskName

更通用的方法是这样的:

 {
    "version": "0.1.0",
    "command": "npm",
    "isShellCommand": true,
    "args": ["run-script"],
    "showOutput": "always",
    "tasks": [
        { "taskName": "webpack" }
    ]
}

对于后一个示例,您可以使用其他要运行的脚本来扩展 tasks 数组。

_提示我的用法_:npm run-script 从 package.json 文件的 scripts 对象中获取要做什么。

编辑:这适用于 VS Code 1.3.1

原文由 zeroxx1986 发布,翻译遵循 CC BY-SA 3.0 许可协议

FWIW,我正在使用 VS Code 1.20.1 ,这是我如何让我的 preLaunchTask 工作:

launch.json

 {
  "version": "0.2.0",
  "configurations": [
    {
        "type": "node",
        "request": "launch",
        ...
        "preLaunchTask": "npm: build",
    }
  ]
}

在我的 package.json

 {
  ...
  "scripts": {
     "build": "tsc"
     ...
  }
}

原文由 Logan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题