是否可以从脚本内打开 VSCode 内的新终端?

Ale*_*lan 5 visual-studio-code

我想通过一个命令启动 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"
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash

( yarn serve_db ) & ( yarn serve_auth ) & ( yarn start )
Run Code Online (Sandbox Code Playgroud)

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

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

DAX*_*lic 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"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

此外,复合启动配置可能会让您感兴趣,因为您的脚本似乎用于启动前端和后端应用程序。

{
    "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"]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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