如何在开始调试RoR会话时自动运行webpack开发服务器



由于Rails 5.1,可以在webpack-dev-server旁边运行rails server。我已经在launch.json中配置了调试器来运行rails服务器。当我通过vscode启动rails服务器时,我希望它在后台自动运行./bin/webpack-dev-server,作为另一个进程自动编译javascript更改,但我不知道如何实现这一点。

我已经在tasks.json中创建了运行webpacker的任务,但我不知道如何将其与launch.json相结合。

这是我的launch.json:

{
"version": "0.2.0",
"configurations": [
{
"preLaunchTask": "webpack-dev-server",
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"program": "${workspaceRoot}/bin/rails",
"args": [
"server"
]
}
]
}

这里是tasks.json:

{
"version": "2.0.0",
"tasks": [
{
"label": "webpack-dev-server",
"type": "shell",
"command": "${workspaceRoot}/webpack-dev-server",
"isBackground": true,
}
]
}

当我分别运行调试和任务时,它按预期工作,但在启动调试时自动运行,但不工作。

我尝试过的东西:

  1. 使用";preLaunchTask">

  2. 将webpack dev-server指定为另一个启动配置,并通过launch.json中的compond将这两个启动组合在一起-这不起作用,因为vscode需要指定启动类型,而shell不支持

  3. 使用&在结束时抑制等待过程完成-不工作

如果有人解决了这个问题,或者知道如何通过单击同时运行两个进程,分享这些知识会很有帮助。

谢谢。

所以我找到了解决方案,这要归功于https://stackoverflow.com/a/54017304/3442759.

tasks.json中,即使不使用也需要指定problemMatcher。如果未指定problemMatcher,即使isBackground设置为true,任务也不会在后台运行。

我用设置步骤创建了要点。https://gist.github.com/tomkra/b1d67a7ae96af34cba78935f15b755b6

所以最终配置是:

launch.json

{
"version": "0.2.0",
"configurations": [
{
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"program": "${workspaceRoot}/bin/rails",
"args": [
"server"
],
"preLaunchTask": "webpack-dev-server"
}
]
}

tasks.json

{
"version": "2.0.0",
"tasks": [
{
"label": "webpack-dev-server",
"type": "shell",
"isBackground": true,
"command": "./bin/webpack-dev-server",
"problemMatcher": [
{
"pattern": [
{
"regexp": ".",
"file": 1,
"location": 2,
"message": 3
}
],
"background": {
"activeOnStart": true,
"beginsPattern": ".",
"endsPattern": ".",
}
}
]
}
]
}

最新更新