【问题标题】:Wait seconds before running next task on scripts package.jscon在脚本 package.json 上运行下一个任务之前等待几秒钟
【发布时间】:2018-03-15 15:43:29
【问题描述】:

我想要做的是当我运行npm run dev 来执行这两个任务时,我需要等待 5 秒,直到下一个任务运行。

运行 npm run server 等待 5 秒,然后运行 ​​npm run client

  "scripts": {
    "start": "node ./bin/www",
    "server": "nodemon start",
    "client": "gulp",
    "dev": "concurrently 'npm run server' 'npm run client'", 
}

【问题讨论】:

    标签: javascript node.js package.json


    【解决方案1】:

    使用睡眠和后台任务。

    根据这些任务的用途,您可能不需要concurrently。您可能只需使用& 将其中一个作为后台任务运行即可。

    一般模式如下:

    ( sleep 5 && delayed_command ) & immediate_command
    

    所以在你的情况下,它看起来像这样:

    "dev": "( sleep 5 && npm run client ) & npm run server"
    

    如果您不希望某个命令的输出,可以在命令后添加> /dev/null 2>&1,如下所示:

    "dev": "( sleep 5 && npm run client > /dev/null 2>&1 ) & npm run server"
    

    【讨论】:

      【解决方案2】:

      添加到@TGrif 答案,使用双&& 链接脚本以按顺序执行它们。所以要先执行sleep命令,把&&放在后面再写npm run client。所以第二个命令(npm run client) 只会在第一个命令(sleep) 完成时执行。

      【讨论】:

      【解决方案3】:

      假设你在 Linux 上,你可以使用sleep 命令:

      "dev": "concurrently 'npm run server' 'sleep 5 && npm run client'"
      

      【讨论】:

      • 您好,谢谢您的回答。我使用的是 macOS,但团队的其他成员使用的是 Windows,而服务器显然是 NodeJs。由于某种原因,第二个任务与第一个任务同时运行,这给了我一个错误,因为我需要先完全加载第一个任务。
      • 所以也许 concurrently 不是解决这个问题的正确工具(因为它正是它的主要任务),您可以使用 "dev": "npm run server && npm run client" 之类的东西。 (对 Windows 帮助不大)
      猜你喜欢
      • 1970-01-01
      • 2018-06-21
      • 2016-02-14
      • 2022-06-15
      • 2017-07-20
      • 1970-01-01
      • 2018-09-24
      • 2012-12-23
      • 1970-01-01
      相关资源
      最近更新 更多