在VS Code tasks.json上使用基于#{fileExtname}的任务

时间:2017-07-11 01:13:58

标签: json visual-studio-code

我一直在尝试使用条件来检查当前打开的文件扩展名,这样我就可以自动使用不同的任务,但没有成功。

这是当前的tasks.json:

{
    "version": "0.1.0",
    "isShellCommand": true,
    "showOutput": "always",
    "suppressTaskName": true,
    "echoCommand": true,

    "tasks": 
    [
        {
            "taskName": "Build c++",
            "command": "",
            "isBuildCommand": true,
            "args": ["g++", "-o", "${fileBasenameNoExtension}", "${fileBasename}"]
        }
    ]
}

我的目标是做出类似的事情:

{
    "version": "0.1.0",
    "isShellCommand": true,
    "showOutput": "always",
    "suppressTaskName": true,
    "echoCommand": true,

    if(#{fileExtname} == ".cpp")
    {
        "tasks": 
        [
            {
                "taskName": "Build",
                "command": "",
                "isBuildCommand": true,
                "args": ["g++", "-o", "${fileBasenameNoExtension}", "${fileBasename}"]
            }
        ]
    }

    if(#{fileExtname} == ".java")
    {
        "tasks": 
        [
            {
                "taskName": "Build",
                "command": "",
                "isBuildCommand": true,
                "args": ["javac", "${fileBasename}"]
            }
        ]
}

有可能吗?

1 个答案:

答案 0 :(得分:0)

不,我不认为这是可能的。但是,您可以很快通过writing a small extension实现此目标 - 即将发布的1.14.0版本将包含API for generating tasks。基于window.activeTextEditor.document.languageId生成不同的任务会非常简单。