VSCode在选择任务时生成task.json条目

时间:2020-03-24 11:04:42

标签: javascript node.js typescript vscode-extensions vscode-tasks

我想创建一个生成Shell任务的VSCode扩展, 例如具有其他通用属性的Shell任务。

示例:

  1. 当用户选择任务(扩展程序提供的我的特定任务)

  2. 自动生成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),但是它是一个好的解决方案?

1 个答案:

答案 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文件非常重要,那么您提到的选项在这种情况下非常有用。跃点可以帮助您快乐编码。我将添加一些代码