我想创建一个生成Shell任务的VSCode扩展, 例如具有其他通用属性的Shell任务。
示例:
当用户选择任务(扩展程序提供的我的特定任务)
自动生成task.json
就像
"tasks": [
{
"label": "mytask",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"command": "Invoke-Build -Task . -File './test'"
},
我尝试进行VSCode样本回购,但是我没有设法做到,如果您单击ctrl+shift+p
并单击为您创建的配置任务按钮,则会自动生成文件 任务json。
我希望它与上面的json条目一起自动显示。我该怎么做?
在下面的链接中,有几个选项可以提供任务(通常...我需要从扩展程序生成它) https://code.visualstudio.com/docs/editor/tasks
我基本上需要在task.json
文件中生成新任务的代码
如果有参考资料,创建新task.json文件的代码可能会给出一个想法
https://github.com/microsoft/vscode/search?p=2&q=tasks.json&unscoped_q=tasks.json
还有另一种选择,就是检查是否有一个tasks.json
文件,如果没有生成一个新文件,并向tasks数组添加一个新条目(使用我的代码而不是vscode api),但是它是一个好的解决方案?
答案 0 :(得分:0)
如果您的任务是shell命令或其他命令,则可以在终端上运行,而无需创建task.json,您只需执行
即可将命令发送到终端vscode.commands.executeCommand('workbench.action.terminal.new');
setTimeout(function () {
const terminal = vscode.window.activeTerminal;
terminal.sendText('you command here')
}, 1200);
如果您真的想创建某种文件来运行任务,则可以在用户项目的根目录中创建自定义json文件mySuperTasks.json,并告诉va代码他应该对您自动执行任务自动检测功能这样,您就不必担心task.json文件
在package.json中,您将拥有类似的东西
"contributes"
"commands": [
{
"command": "extension.yourExtensionName.makeTaksFile",
"title": "create mySuperTasks.json",
"category": "your extention name"
}
],
"keybindings": [
{
"command": "extension.yourExtensionName.makeTaksFile",
"key": "alt+L alt+C",
"mac": "cmd+L cmd+C"
}]
// extension-main-script例如:extinsion.js,您将拥有
let makeTaksFile = vscode.commands.registerCommand('extension.yourExtensionName.createTasksFile', function () {
const rootFolder = vscode.workspace.getWorkspaceFolder();
fs.writeFile(rootFolder.uri + '/mystasks.json', 'file content your json', (callback) => { });
//then you create taskProvider via vs code api
// doc https://code.visualstudio.com/api/extension-guides/task-provider
});
context.subscriptions.push('makeTaksFile');
如果创建task.json文件非常重要,那么您提到的选项在这种情况下非常有用。跃点可以帮助您快乐编码。我将添加一些代码