如何在一个tasks.json中定义几个打字稿编译任务?

时间:2016-04-06 12:58:15

标签: typescript visual-studio-code

我正在尝试为VS Code中的typescript项目定义不同的构建任务。只要只有一个任务,我的tasks.json就可以工作。

tasks.json(命令pallette> task tsc)

{
"version": "0.1.0",
"command": "tsc",
"showOutput": "silent",
"args": ["-p", "."],
"problemMatcher": "$tsc"
"isShellCommand": true
}

当我定义几个任务时,我可以从命令面板中选择它们,但它们会产生以下错误:

TS5042:选项'project'不能与命令行上的源文件混合

tasks.json(命令调色板>任务dosomething)

{
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"tasks":[
    {
        "taskName":"dosomething",
        "showOutput": "silent",
        "args": ["-p", "."],
        "problemMatcher": "$tsc"
    },
    {
        "taskName":"compileandwatch",
        "showOutput": "silent",
        "args": ["-p", ".", "-w"],
        "problemMatcher": "$tsc"
    }
]
}

问题:如何在tasks.json中定义几个任务?哪些参数应包含在“任务”中,哪些应该包含在根目录中? microsoft docs中没有示例。

我试着把“args”留空:

"args": [],

然后我收到此错误“dosomething.ts”未找到

1 个答案:

答案 0 :(得分:1)

我想你忘了在每项任务上设置suppressTaskName = true。下面是一个适合我的tasks.json示例。请注意,这样args定义了应该运行的内容和传递给它的参数,任务名称不会影响结果命令:

{
    "version": "0.1.0",
    "command": "node",
    "windows": {
        "command": "node.exe"
    },
    "isShellCommand": true,
    "tasks": [
        {
            "taskName": "build.dev",
            "args": ["${workspaceRoot}/node_modules/gulp/bin/gulp.js", "build.dev"],
            "isBuildCommand": true,
            "suppressTaskName": true,
            "problemMatcher": [
                "$tsc"
            ]
        },
        {
            "taskName": "document.code",
            "args": ["${workspaceRoot}/node_modules/gulp/bin/gulp.js", "document.code"],
            "suppressTaskName": true,
            "problemMatcher": []
        },
        {
            "taskName": "start.specs.web.server",
            "args": ["${workspaceRoot}/node_modules/http-server/bin/http-server",
                    "${workspaceRoot}/dist/dev/specs"],
            "suppressTaskName": true,
            "problemMatcher": []
        }        
    ]
}

希望这有帮助。