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

9
我已经为我使用的编程语言构建了一个扩展,并创建了热键快捷方式,用于调用当前打开文档的URI的编译器可执行文件。我想将其转换为我的扩展中的构建任务。我已经创建了一个tasks.json文件,其中包含一个构建任务,可以工作并捕获错误等,但是只有在当前工作区中放置它时才起作用。
绝对没有添加构建任务的示例,任务提供程序的API文档专门针对Ruby Rakefiles或其他内容。我只想创建一个带有问题匹配器的Shell可执行文件构建任务。有人能给我一个例子吗?
1个回答

15
这是一个最简 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.json进行贡献,如果需要,可以添加其他属性

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

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

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

最后,您想要引用的问题匹配器需要在package.jsoncontributes.problemMatchers部分中进行贡献。


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