Han*_*Han 5 visual-studio-code vscode-extensions
我正在为规范语言编写 vscode 扩展。我想为插件的用户提供特定的任务。可以使用tasks.json 来提供该任务。有没有办法将任务添加到使用该扩展的用户的tasks.json 中?
该文档在这里也没有帮助我。当您通过扩展提供任务时,就会有TaskProvider API。不过,与经典方法相比,该示例并未详细介绍如何创建这些任务tasks.json。
在 package.json 中,您需要定义此扩展贡献的任务类型。type这与in无关tasks.json。它是一个自由格式的字符串。如果您需要自定义问题匹配器,您还需要在此处定义主题。
"contributes": {
"taskDefinitions": [
{
"type": "mytask"
}
],
"problemMatchers": [
{
"name": "mywarnings",
"base": "$gcc",
"fileLocation": [
"relative",
"/"
]
}
]
},
Run Code Online (Sandbox Code Playgroud)
您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;
}
});
Run Code Online (Sandbox Code Playgroud)
如果您想创建 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)
);
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助。我看到的最大问题是各种名称(例如类型)的重载,并且tasks.json中的格式与使用TaskProvider API构建任务的方式完全不同。
| 归档时间: |
|
| 查看次数: |
1441 次 |
| 最近记录: |