由于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,
}
]
}
当我分别运行调试和任务时,它按预期工作,但在启动调试时自动运行,但不工作。
我尝试过的东西:
使用";preLaunchTask">
将webpack dev-server指定为另一个启动配置,并通过
launch.json
中的compond将这两个启动组合在一起-这不起作用,因为vscode需要指定启动类型,而shell不支持使用&在结束时抑制等待过程完成-不工作
如果有人解决了这个问题,或者知道如何通过单击同时运行两个进程,分享这些知识会很有帮助。
谢谢。
所以我找到了解决方案,这要归功于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": ".",
}
}
]
}
]
}