在脚本内部能否在VSCode中打开一个新的终端?

5

我想通过一条命令启动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个终端,每个终端都有一个单独的命令?

复合任务/启动配置是否对您有效? - DAXaholic
@DAXaholic 还没有,我还在努力解决 - 如果我能让它工作,一定会回来接受/点赞。问题是,我的服务器是用ES6编写的,所以我需要先使用babel进行转译...这是一个问题,因为我正在Win10机器上的VSCode中运行WSL。 - Alex McMillan
1个回答

6

我认为这可能是与合成任务相关的内容。

{
    "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"]
        }
    ]
}

这两个示例均来自相应文档页面,但将它们调整到您的脚本中应该很简单。


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