3

我想从一个命令启动 3 个服务器。

我有这样的package.json脚本:

"serve_auth": "cd dev/mock/auth && nodemon --exec babel-node ./server.js --presets @babel/env",
"serve_db": "cd dev/mock/db && nodemon --exec babel-node ./server.js --presets @babel/env",
"start": "react-scripts start",
"develop": "./launch_script.sh"

我有一个launch_script.sh像这样的脚本:

#!/bin/bash

( yarn serve_db ) & ( yarn serve_auth ) & ( yarn start )

但这会在一个终端窗口中将它们全部打开,最终它们会相互绊倒。

我知道您可以从 VSCode GUI 打开新终端,但是可以从一个终端中打开新终端吗?或者告诉 VSCode 用单独的命令打开 3 个终端?

4

1 回答 1

3

我认为这可能适用于复合任务

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Client Build",
            "command": "gulp",
            "args": ["build"],
            "options": {
                "cwd": "${workspaceRoot}/client"
            }
        },
        {
            "label": "Server Build",
            "command": "gulp",
            "args": ["build"],
            "options": {
                "cwd": "${workspaceRoot}/server"
            }
        },
        {
            "label": "Build",
            "dependsOn": ["Client Build", "Server Build"]
        }
    ]
}

复合任务
您还可以使用dependsOn 属性从更简单的任务中组合任务。例如,如果您有一个包含客户端和服务器文件夹的工作区,并且都包含构建脚本,您可以创建一个任务,在不同的终端中启动两个构建脚本。如果在 dependsOn 属性中列出了多个任务,则默认情况下它们是并行执行的。

此外,复合启动配置可能对您来说很有趣,因为您的脚本似乎是用于启动前端和后端应用程序。

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Server",
            "program": "${workspaceFolder}/server.js",
            "cwd": "${workspaceFolder}"
        },
        {
            "type": "node",
            "request": "launch",
            "name": "Client",
            "program": "${workspaceFolder}/client.js",
            "cwd": "${workspaceFolder}"
        }
    ],
    "compounds": [
        {
            "name": "Server/Client",
            "configurations": ["Server", "Client"]
        }
    ]
}

两者都是相应文档页面中的示例,但将它们调整为您的脚本应该很简单。

于 2019-08-23T04:36:29.447 回答