扩展API - 任务提供程序 - 构建任务示例

问题描述 投票:3回答:1

我已经为我使用的编程语言构建了一个扩展,并且我创建了热键快捷方式,用于使用当前打开的文档的URI调用编译器可执行文件。我想将其转换为我的扩展中的构建任务。我已经制作了一个tasks.json文件,其中包含一个可以正常工作并捕获错误的构建任务,但只有当我将它放在当前工作空间中时它才有效。

绝对没有在任何地方添加构建任务的例子,API documentation for task providers专门用于Ruby Rakefiles或其他东西。我只是想用问题匹配器创建一个shell可执行构建任务。谁能举个例子呢?

visual-studio-code vscode-extensions vscode-tasks
1个回答
1
投票

这是一个最小的TaskProvider实现,只需在shell中运行echo "Hello World"

'use strict';
import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
    var type = "exampleProvider";
    vscode.tasks.registerTaskProvider(type, {
        provideTasks(token?: vscode.CancellationToken) {
            var execution = new vscode.ShellExecution("echo \"Hello World\"");
            var problemMatchers = ["$myProblemMatcher"];
            return [
                new vscode.Task({type: type}, vscode.TaskScope.Workspace,
                    "Build", "myExtension", execution, problemMatchers)
            ];
        },
        resolveTask(task: vscode.Task, token?: vscode.CancellationToken) {
            return task;
        }
    });
}

任务定义(new Task()的第一个参数)需要通过package.jsoncan have additional properties if needed提供:

"contributes": {
    "taskDefinitions": [
        {
            "type": "exampleProvider"
        }
    ]
}

执行任务:运行任务命令时,应激活具有任务提供程序的扩展:

"activationEvents": [
    "onCommand:workbench.action.tasks.runTask"
]

最后,您要引用的问题匹配器需要在package.jsoncontributes.problemMatchers部分中提供。

© www.soinside.com 2019 - 2024. All rights reserved.