Automatically running commands with nodemon

Instead of running the same commands over and over again, some of the command-line tools that I use have a watch mode and will automatically re-run when files are changed, however, not all do.

Instead of doing this manually, I can achieve the same thing though using a tool called nodemon - a script monitor for node projects, but it can work with non-node projects too.

Here's an example where I'm automatically re-running my PHPUnit tests using a just test recipe each time a file within my custom modules directory changes:

nodemon \
  --watch web/modules/custom \
  --ext '*' \
  --exec "just test --stop-on-failure --colors=always"

I specify the files or directories I want to watch, which file extensions should trigger a restart (in this case, I've enabled all extensions), and the command to execute.

This watches all files and run all of the tests, but I can filter either if I need to.

As well as PHP tools like PHPUnit and PHPStan, I also use this for other things such as when creating presentation slides with rst2pdf where I can automatically re-generate the PDF whenever I update the rst file.

- Oliver

P.S. If you're creating a new Drupal module, try my free Drupal module template.

Was this useful?

Sign up here and get more like this delivered straight to your inbox every day.

About me

Picture of Oliver

I'm an Acquia-certified Drupal Triple Expert with 17 years of experience, an open-source software maintainer and Drupal core contributor, public speaker, live streamer, and host of the Beyond Blocks podcast.