Вот минимальная TaskProvider
реализация, которая просто запускает 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"
}
]
}
Расширения с поставщиком задач должны активироваться при выполнении команды Tasks: Run Task :
"activationEvents": [
"onCommand:workbench.action.tasks.runTask"
]
И, наконец, средства для сопоставления проблем, на которые вы хотите сослаться, должны быть внесены в раздел package.json
contributes.problemMatchers
.