组合 Visual Studio Code 构建任务

Posted

技术标签:

【中文标题】组合 Visual Studio Code 构建任务【英文标题】:Combining Visual Studio Code Build Tasks 【发布时间】:2016-05-24 07:53:28 【问题描述】:

Visual Studio Code documentation provides example tasks.json configuration 允许 typescript 编译或 markdown 编译。它没有说明如何同时实现两者

如何做到这一点?

这里是两个例子的总结...

打字稿示例

如果我想让 VSCode 执行 typescript 构建步骤,说明我需要安装 typescript (npm install -g typescript),然后定义以下任务:


    "version": "0.1.0",
    "command": "tsc",
    "isShellCommand": true,
    "showOutput": "silent",
    "args": ["*.ts"],
    "problemMatcher": "$tsc"

降价示例

如果我想让 VSCode 执行 Markdown 构建步骤,文档说我可以安装我选择的 Markdown 插件(例如npm install -g marked),然后定义一个任务:


    "version": "0.1.0",
    "command": "marked",
    "isShellCommand": true,
    "args": ["sample.md", "-o", "sample.html"]

现在呢?

显然,tasks.json 可能只包含一个 JSON 对象。因此,我不能简单地将上述两个定义都用逗号连接起来。另一方面,可以在整个任务定义中定义多个任务:


    "version": "0.1.0",
    "command": "<what goes here?>",
    "isShellCommand": true,
    "suppressTaskName": true, //or false?

    "tasks": [
        
            "taskName": "Launch Typescript"
        ,
        
            "taskName": "Launch Markdown"
                
    ]

以上是法律语法的骨架,但不清楚如何完成这个故事。我知道here 和there 关于如何解决这类问题的讨论,但似乎存在根本性的脱节。例如,当我按下ctrl+shift+b 时,VSCode 怎么知道它应该执行这两个任务?

毫无疑问,VSCode 的开发人员有一种更直接、更简单的方法来适应多个构建任务。有谁知道那是什么?

【问题讨论】:

【参考方案1】:

您的答案几乎是正确的。

您可以定义多个构建任务,如上一个示例所示。

您没有意识到您可以覆盖任务中的全局属性。这意味着在一项任务中,您可以以一种方式定义“command”和“args”,而在另一种方式中使用完全不同的值来定义它。

从某种意义上说,将上面两个示例的内容复制到上一个示例中的每个任务中

【讨论】:

实际上,无法覆盖“command”属性……这就是问题的症结所在。 VSCode 在尝试这种方法时会同时出现智能感知和执行错误。太糟糕了——因为如果它奏效了,那将是一个巨大的帮助。 哦,有趣,我想我错了。 (在电话上,无法测试)-但如果是这种情况,您总是可以制作一个简单的脚本并将其用作命令(它只是调用一个程序,您可以在系统上放置任何 exe 的完整路径如果您愿意),然后在该脚本中,获取您要运行的程序的参数之一。 是的,创建一个“传递参数的通用脚本”是其他人正在使用的方法。尽管如此,如果 VS 代码的作者记录了他们自己的方法,这样我们其他人就不必经历(1)技术和(2)技术改进的缓慢发现过程,那将是很酷的。例如,我希望我的 tasks.json 是跨平台的。建议的模型是什么?我会弄明白的,但为什么每个 VS Code 开发人员都要从头开始弄明白呢?

以上是关于组合 Visual Studio Code 构建任务的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio Code 中发布构建

Visual Studio Code 中的 TypeScript 运行构建任务失败

Visual Studio Code 编辑器是基于啥构建的

如何使用 Visual Studio Code 为 cmake 添加预构建步骤?

如何将我的 VIsual Studio Code 构建的应用程序发布为 APK?

C# Visual Studio Code:构建 Hello World 可执行文件