Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Wait seconds before running next task on scripts package.jscon

What I want to do is when I run npm run dev to execute those both tasks I need to wait for 5 seconds until next task runs.

Run the npm run server wait for 5 seconds and then npm run client

  "scripts": {
    "start": "node ./bin/www",
    "server": "nodemon start",
    "client": "gulp",
    "dev": "concurrently 'npm run server' 'npm run client'", 
}
like image 992
Matt Avatar asked Oct 04 '17 09:10

Matt


3 Answers

Assuming you're on Linux, you can use sleep command:

"dev": "concurrently 'npm run server' 'sleep 5 && npm run client'"
like image 156
TGrif Avatar answered Sep 21 '22 05:09

TGrif


Use Sleep and Background tasks.

Depending on what these tasks do, you might not need concurrently. You might be able to get away with just using & to run one of them as a background task.

The general pattern is as follows:

( sleep 5 && delayed_command ) & immediate_command

So in your case, it would look something like this:

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

If you don't want the output from one of the commands, you can add > /dev/null 2>&1 after the command, like this:

"dev": "( sleep 5 && npm run client > /dev/null 2>&1 ) & npm run server"
like image 21
Joshua Pinter Avatar answered Sep 21 '22 05:09

Joshua Pinter


Adding to @TGrif answer, chain scripts with double ampersand && to execute them sequntially. So to execute sleep command first, put && after it and then write npm run client. So the second command(npm run client) will execute only when the first(sleep) is complete.

like image 24
Avantika Saini Avatar answered Sep 20 '22 05:09

Avantika Saini