我正在为规范语言编写一个vscode扩展。我想为插件的用户提供特定的任务。可以使用task.json使任务可用。 有没有一种方法可以将任务添加到使用该扩展名的用户的task.json中?
答案 0 :(得分:0)
文档在这里也没有帮助我。通过扩展名提供任务时,会出现TaskProvider API。与传统的tasks.json
方法相比,该示例并未详细说明如何创建这些任务。
在package.json中,您需要定义此扩展贡献的任务类型。这与type
中的tasks.json
没有关系。这是一个自由格式的字符串。如果您需要自定义问题匹配器,则还需要在此处定义主题。
"contributes": {
"taskDefinitions": [
{
"type": "mytask"
}
],
"problemMatchers": [
{
"name": "mywarnings",
"base": "$gcc",
"fileLocation": [
"relative",
"/"
]
}
]
},
您需要在extension.ts
中提供任务。假设我们可以在vscode.Task
中使用tasks
的数组,您可以这样做:
vscode.tasks.registerTaskProvider('mytask', {
provideTasks: () => {
return tasks;
},
resolveTask(_task: vscode.Task): vscode.Task | undefined {
// as far as I can see from the documentation this just needs to return undefined.
return undefined;
}
});
如果要创建Shell任务,则需要以下内容:
new vscode.Task (
{type: 'shell'}, // this is the same type as in tasks.json
ws, // The workspace folder
'name', // how you name the task
'MyTask', // Shows up as MyTask: name
new vscode.ShellExecution(command),
["mywarnings"] // list of problem matchers (can use $gcc or other pre-built matchers, or the ones defined in package.json)
);
我希望这会有所帮助。我看到的最大问题是各种名称(如类型)的重载,而task.json中的格式与使用TaskProvider API构建任务的方式完全不同。