VSCode 任务:运行各种 Node 命令

8
我有一个单体库,想要创建一个脚本来在本地启动特定的项目。该项目完全基于Node.js。
为了在本地进行开发,我需要按照以下顺序运行以下命令:
1. 启动docker镜像 - cd docker/dockerForTests - docker-compose up -d
2. 启动Web Auth服务器 - cd src/project/webAuthentication - setenvs projectAuthentication && npm start
3. 启动API - cd src/project/api - setenvs projectAPI && npm start
4. 启动Web客户端 - cd src/project/web - setenvs projectWeb && npm start

我通常会在VSCode中使用新的终端窗口来启动每个部分,以方便使用。

为了自动化此过程,我了解到了VSCode任务。

虽然看起来它们是为“构建”或“监视”任务而设计的,但我认为我可以修改其行为以便代替我运行上述命令。

这是我的尝试:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "runner": "terminal",
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Start Docker",
            "dependsOrder": "sequence",
            "type": "shell",
            "command": "cd docker/dockerForTests && docker-compose up -d",
        },
        {
            "label": "Start Web Auth",
            "dependsOrder": "sequence",
            "type": "process",
            "command": "cd src/project/webAuthentication && setenvs projectAuthentiction && npm start"
        },
        {
            "label": "Start Up Local Development Environment",
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": true,
                "panel": "new",
                "showReuseMessage": false,
                "clear": true
            },
            "dependsOn": [
                "Start Docker",
                "Start Web Auth"
            ],
            "problemMatcher": []
        }
    ]
}

第一个命令可以正常工作,但我希望它像集成终端一样,在命令完成运行后挂起以等待输入。

enter image description here

其次,第二个任务无法工作,因为它不是Node命令。
我希望它能像常规的bash输入一样工作。

enter image description here

我该如何自动化上述流程?这有可能吗?


你是否认为在容器中运行服务器、API和Web是可以的,或者你只想使用VSCode的功能? - NicoM
@NicoM,我不确定你所说的容器是什么意思。基本上,我只想手动执行相同的操作。也就是说,在VSCode中为每个“项”打开一个新的终端窗口。 - nopassport1
2个回答

2

至少对于第2、3和4点,concurrently 可以很好地解决问题,并且它也应该可以很好地解决第1点的问题。在您的根目录的 package.json 文件的 scripts 部分中添加以下脚本,您就可以通过一个命令启动您的开发环境了。

"start-docker": "cd docker/dockerForTests && docker-compose up -d",
"start-auth": "cd src/project/webAuthentication && setenvs projectAuthentication && npm start",
"start-api": "cd src/project/api && setenvs projectAPI && npm start",
"start-client": "cd src/project/web && setenvs projectWeb && npm start",
"start-dev": "concurrently \"npm run start-docker\" \"npm run start-auth\" \"npm run start-api\" \"npm run start-client\""

这不使用VSCode任务,但无论如何都会简化您的生活。

是的,我会说“它需要您打开一个终端并在同一个终端中运行您需要的4个命令”。 - Daniele Ricci
有点不太幸运,因为我正在寻找一些能够在独立的终端中分别运行每个点的东西。 - nopassport1
“Separately”是什么意思?在同一终端中运行的四个进程必须以某种方式共享唯一的终端输出。 - Daniele Ricci
这就是问题所在,我需要它们在4个单独的终端中运行。每个命令都需要有自己的终端窗口。 - nopassport1

1

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