Wait for Tasks

There are a couple ways to ensure that a set up task has been run before you run a particular task.

The most common solution is to use the dependsOn property. This works regardless of what executor the task is using. Once the dependent tasks have completed, the primary task will start. Reference the project configuration documentation for more information.

If you are using the @nx/js:node executor, you can also use the waitUntilTargets option of that executor. Once the dependent tasks emit something to the console, the primary task will start.

waitUntilTargets

If you have a Node api called api and a database project called db, you may want to run nx serve db any time you run nx serve api.

To set that up, edit the api app's project.json file:

/apps/api/project.json
1{ 2 "targets": { 3 "serve": { 4 "executor": "@nx/js:node", 5 "options": { 6 "waitUntilTargets": ["db:serve"] 7 } 8 } 9 } 10} 11
Nx 15 and lower use @nrwl/ instead of @nx/

With this configuration in place, if you run nx serve api, Nx will first run nx serve db. The nx serve api process will not be launched until nx serve db outputs something to the console. Then both processes will continue executing in parallel. When you kill the main process, both the db and api processes will be stopped.