代码之家  ›  专栏  ›  技术社区  ›  24sharon

Package Json运行多个命令(React和nodejs)

  •  0
  • 24sharon  · 技术社区  · 2 年前

    这是我的剧本

      "scripts": {
        "init-client": "cd ./client && npm start",
        "init-server": "cd ./server && npm run dev",
        "start": "npm run init-server && npm run init-client"
      },
    

    我想启动客户端和服务器 但当我运行启动命令时,服务器正在运行

    另外,我可以在单独的终端选项卡中运行每个命令吗?

    2 回复  |  直到 2 年前
        1
  •  1
  •   Petros    2 年前

    您面临的问题是由于 && 操作符在shell脚本中工作。当您使用 && ,只有在左侧的命令成功完成后,它才会运行右侧的命令。在您的情况下,服务器启动并保持运行,因此客户端命令永远没有机会启动。

    对于基于Unix的系统(如macOS),您可以在package.json中修改脚本部分,如下所示:

    "scripts": {
      "init-client": "cd ./client && npm start",
      "init-server": "cd ./server && npm run dev",
      "start": "npm run init-server & npm run init-client"
    }
    

    对于Windows,您需要使用start命令:

    "scripts": {
      "init-client": "cd ./client && npm start",
      "init-server": "cd ./server && npm run dev",
      "start": "start npm run init-server && start npm run init-client"
    }
    

    或者,您可以使用 concurrently 适用于所有系统的包。

    首先,安装 同时 作为开发依赖项:

    npm install --save-dev concurrently

    然后将脚本修改为:

    "scripts": {
      "init-client": "cd ./client && npm start",
      "init-server": "cd ./server && npm run dev",
      "start": "concurrently \"npm run init-server\" \"npm run init-client\""
    }
    
        2
  •  1
  •   Olumayowa A.    2 年前

    问题是start命令按顺序运行init服务器和init客户端。要同时运行它们,可以使用concurrent包来解决此问题:

    npm并发安装--保存dev

    然后更新您的package.json文件

    "scripts": {
    

    “init client”:“cd./client&&npm start”, “init server”:“cd./server&&npm run dev”, “start”:“concurrently”npm run init server“npm run init-client” }

    你使用的是macOS还是windows?