我为使用的编程语言构建了扩展,并创建了热键快捷方式,用于使用当前打开的文档的URI调用编译器可执行文件。我想将其转换为扩展程序中的构建任务。我用构建任务制作了一个tasks.json
文件,该文件可以工作并捕获错误等,但是只有将其放在当前工作空间中后,该文件才能工作。
绝对没有在任何地方添加构建任务的示例,而API documentation for task providers是专门用于Ruby Rakefiles或其他东西的。我只是想做一个带有问题匹配器的shell可执行构建任务。谁能给我一个例子吗?
答案 0 :(得分:0)
这是一个最小的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
和can have additional properties if needed进行贡献:
"contributes": {
"taskDefinitions": [
{
"type": "exampleProvider"
}
]
}
执行任务:运行任务命令时,应激活任务提供程序的扩展:
"activationEvents": [
"onCommand:workbench.action.tasks.runTask"
]
最后,您要引用的问题匹配者需要在package.json
的{{1}}部分中提供。