vscode 两个平台的任务(避免复制和粘贴)

Task in vscode for two plattforms (avoiding copy & paste)

我使用tasks in VScode,我也在Windows和Linux(WSL2)之间跳转,有时我也需要苹果(osx)。

我创建了一些任务,我在其中选择了不同的平台(windows、linux、osx)。

这是我的 tasks.json 文件:

{
    "tasks": [
        {
            "label": "Create Hello World File",
            "group": "none",
            "type": "shell",
            "windows": {
                "command": "echo \"Hello World\" > '${workspaceFolder}\dummy.txt'"
            },
            "linux": {
                "command": "echo \"Hello World\" > '${workspaceFolder}/dummy.txt'"
            },
            "osx": {
                "command": "echo \"Hello World\" > '${workspaceFolder}/dummy.txt'"
            }
        }
    ]
}

osxlinux 的命令通常是相同的。如何避免复制和粘贴命令?

我试过了:

{
  "label": "Create Hello World File",
  "group": "none",
  "type": "shell",
  "windows": {
    "command": "echo \"Hello World\" > '${workspaceFolder}\dummy.txt'"
  },
  ["linux", "osx"]: {
    "command": "echo \"Hello World\" > '${workspaceFolder}/dummy.txt'"
  }
}

当然那是无效的json,但这是一次尝试。

如果您需要依赖于平台的目录分隔符,您可以使用命令变量。

使用扩展名 Command Variable.

使用变量

${command:extension.commandvariable.dirSep}

编辑

Valid operating properties are windows for Windows, linux for Linux, and osx for macOS. Properties defined in an operating system specific scope override properties defined in the task or global scope.

如果您想要 [linux, osx] 的某些选项和 [windows] 的不同选项,请在任务中定义 [linux, osx] 版本,在 OS 特定文件中定义 [windows]范围

{
  "label": "Create Hello World File",
  "group": "none",
  "type": "shell",
  "command": "echo \"Hello World\" > '${workspaceFolder}/dummy.txt'"
  "windows": {
    "command": "echo \"Hello World\" > '${workspaceFolder}\dummy.txt'"
  }
}

顺便说一句,在启动或任务配置中使用的 ${pathSeparator} 变量应该在 v1.52 中 - 它现在在 Insiders' Build 中。