使用远程SSH的VSCode - 在主机上运行任务

3

我使用VSCode的 Remote - SSH 插件通过SSH连接到远程服务器。我想在本地机器上使用远程文件的路径来运行任务。

具体来说,我有一个HTML文件在远程机器上,我想使用URL在我的本地Windows机器上预览/交互。

我的 task.json 应该像这样:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Open Remote HTML",
            "type": "shell",
            "command": "start https://url_to_remote.com/${file}"
        }
    ]
}

编辑:此外,我有任务应继续在远程机器上运行,并且我希望可以按任务基础选择在本地或主机机器上运行的选项。


如果我理解正确的话,您想在VSCode中设置一个任务,在本地计算机上运行一个命令,打开浏览器并访问远程计算机上的文件?如果是这样,一种不需要任务的方法是:在远程计算机上设置一个静态Web服务器,然后切换到Firefox并在加载的页面上按F5。另一种方法是在远程计算机上设置一个任务,将文件上传到您的计算机,然后重复第一步。如果您需要本地代码执行,请设置类似Autohotkey的简单工具,以打开浏览器到远程URL,而不是使用任务。 - abelito
感谢您详细的回复!我想要澄清一下,我的远程机器会生成几个HTML报告文件,并且这些文件不会被修改。在主机上,我可以通过URL查看任何报告,例如:https://url_to_remote.com/path/to/index.html。我希望自动化这个过程,避免需要复制基本的URL,复制VSCode中的文件路径并搜索地址。非常感谢您的反馈。 - kche
1个回答

1

很遗憾,使用远程SSH扩展时无法在本地运行任务,尽管似乎有足够的需求,并已添加到他们的待办事项中:

https://github.com/microsoft/vscode-remote-release/issues/168

如果你决定要这样做,那么一个非常hacky的方法是:

  1. 在本地机器上设置基本的Web服务器,位于localhostIP。

  2. 公开一个端点,读取名为file的URL参数(http://localhostIP:3000/?file=blah.html),并在Firefox/您选择的浏览器中打开一个新标签页,如下所示:

    firefox --new-tab https://remotehostIP:3000/blah.html
    

    这是一个可从bash运行的一行Web服务器,通过本地终端(ctrl+shift+P,搜索集成以启动连接到远程主机的本地终端)运行。此Web服务器完成了这里提到的步骤1和2(按ctrl+c停止Web服务器):

    echo "const http = require('http');const {exec} = require('child_process');http.createServer(function (req, res) {h='http://remotehostIP:3000/';exec(\`firefox --new-tab \${h+req.url.slice('/?file='.length)}\`);res.end();}).listen(3000);" | node
    

    缩进,易于阅读的代码:

    const http = require('http');
    const {exec} = require('child_process');
    
    http.createServer(function (req, res) {
        h="http://remotehostIP:3000/";
        exec(`firefox --new-tab ${h+req.url.slice("/?file=".length)}`);
        res.end();
    }).listen(3000);
    
  3. 最后,创建一个任务,curl并访问localhostIP Web服务器,并传递${relativeFile}。此任务在远程机器上运行,但将触发您的localhostIP Web服务器打开Firefox。以下是可能的样子:

     "tasks": [
         {
             "label": "show current html file",
             "type": "shell",
             "command": "curl",
             "args": ["http://localhostIP:3000/?file=${relativeFile}"],           
             "group": {
                 "kind": "build",
                 "isDefault": true
             }
         }
     ]
    

我认为目前这是最好的尽力解决方案,而不需要投入大量时间。如果您遇到任何问题,请告诉我!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接