如何在Visual Studio代码任务中使用stdin / stdout重定向?

时间:2017-05-29 13:39:42

标签: visual-studio-code stdout stdin stylus vscode-tasks

我想使用Visual Studio Code任务编译我的Stylus文件,但该命令需要stdin / stdout重定向(使用<>):

stylus --compress < main.styl > main.css

这不起作用,因为行为似乎与shell不同。

尝试

{
    "version": "0.1.0",
    "tasks": [
        {
            "taskName": "styles",
            "isBuildCommand": true,
            "isShellCommand": true,
            "echoCommand": true,
            "command": "stylus",
            "args": [
                "--compress",
                "<",
                "main.styl",
                ">",
                "main.css"
            ]
        }
    ]
}

捕捉

running command$ stylus --compress < main.styl > main.css
/usr/local/lib/node_modules/stylus/bin/stylus:641
    if (err) throw err;
             ^

Error: ENOENT: no such file or directory, stat '<'

1 个答案:

答案 0 :(得分:0)

据我所知,无法从here描述的任务模式中重定向stdin和stdout。

要执行重定向,您将需要编写一个小的实用程序,该实用程序接受可执行文件的名称,输入文件,输出文件以及任何其他参数。然后,此实用程序EXE文件将执行您的“手写笔”,将其输入和输出重定向到在实用程序可执行文件上指定的文件。如果您的实用程序EXE文件名为redirect.exe,则命令行为

redirect.exe stylus.exe main.styl main.css --compress

您的task.json将如下所示:

…
"command": "redirect.exe",
"args": [
    "stylus.exe", "main.styl", "main.css", "--compress", "--etc"
]