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

Ray*_*n D 6 javascript node.js typescript vscode-extensions vscode-tasks

我想创建一个 VSCode 扩展来生成一个 shell 任务,比如带有附加通用属性的 shell 任务。

例子:

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

  2. Atask.json是自动生成的,如


   "tasks": [
       {
         "label": "mytask",
         "type": "shell",
         "group": {
           "kind": "build", 
           "isDefault": true
         },
         "command": "Invoke-Build -Task . -File './test'"
    },


Run Code Online (Sandbox Code Playgroud)

我尝试VSCode样品回购,但是我没能做到这一点,生成的文件只是,如果你点击ctrl+shift+p,点击配置任务按钮,它会为您创建的任务JSON。我希望它自动与我上面的 json 条目一起使用。我该怎么做?

在以下链接中有几个选项可以提供任务(手动...我需要从扩展中生成) https://code.visualstudio.com/docs/editor/tasks

我基本上需要在task.json文件中生成新任务的代码

如果有一个参考,其中创建新的tasks.json文件的代码也许可以提供一个想法

https://github.com/microsoft/vscode/search?p=2&q=tasks.json&unscoped_q=tasks.json

还有另一种选择是检查是否有tasks.json文件,如果没有生成新文件并向任务数组添加新条目(使用我的代码而不是 vscode api),但这是一个好的解决方案吗?

Nad*_*dou 0

如果你的任务是 shell 命令或任何可以在终端上运行的东西,你不需要创建tasks.json,你只需通过执行将命令发送到终端

vscode.commands.executeCommand('workbench.action.terminal.new');
setTimeout(function () {
    const terminal = vscode.window.activeTerminal;
    terminal.sendText('you command here')
}, 1200);
Run Code Online (Sandbox Code Playgroud)

如果你确实想创建某种文件来运行你的任务,你可以在用户项目的根目录中创建自定义 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"
        }]
Run Code Online (Sandbox Code Playgroud)

在你 //extension-main-script ex: 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');
Run Code Online (Sandbox Code Playgroud)

如果创建tasks.json 文件非常重要,那么您提到的选项在这种情况下非常有帮助。希望这可以帮助您快乐编码。我将添加一些代码