是否可以在 VS Code 中指定用户特定的预命令?

Is it possible to specify user specific pre commands in VS Code?

我们有很多人通过同一个 GitLab 存储库进行开发。我们正在使用 VS Code 任务来执行内部命令。主要命令对每个人都是一样的:internal_command on Windows and internalCommand on Linux.

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label" : "do it",
            "type" : "shell",
            "windows": {
                "command": "internal_command"
            },
            "linux": {
                "command": "internalCommand"
            }
        }
    ]
}

这按预期工作。

一些用户need/want到运行一个特定的命令主命令之前。例如,一个用户想要重命名一个文件,另一个用户想要更改一个环境变量等等...

我们不希望 .vscode/tasks.json 有多个版本,因为在将内容推送到 GitLab 时会造成混乱。

所以我想知道是否有办法在项目的 .vscode/tasks.json 文件中指定用户特定任务?

您可以借助扩展 Command Variable it allows you to use the content of a file as a command in the terminal. The file can also contain Key-Value pairs or be a JSON 文件。

假设您将此 userTask.txtuserTask.json 文件存储在 .vscode 文件夹中,并将该文件添加到 .gitignore 文件。

使用当前版本的扩展文件 userTask.txt 必须 存在,如果文件不存在,我将添加一个选项来提供替代文本。您可以使用 echo No User Task

等虚拟命令填充文件

设置你的task.json喜欢

{
  "version": "2.0.0",
  "tasks": [
    {
      "label" : "do it",
      "type" : "shell",
      "windows": {
        "command": "internal_command"
      },
      "linux": {
        "command": "internalCommand"
      },
      "dependsOrder": "sequence",
      "dependsOn": ["userTask"]
    },
    {
      "label" : "userTask",
      "type" : "shell",
      "command": "${input:getUserTask}"
    }
  ],
  "inputs": [
    {
      "id": "getUserTask",
      "type": "command",
      "command": "extension.commandvariable.file.content",
      "args": {
        "fileName": "${workspaceFolder}/.vscode/userTask.txt"
      }
    }
  ]
}