Articles Github Feed

Entr - The file watcher you’ve never heard of

Entr’s website

gulp, grunt, watchman or any of the proprietary built-in watchers in IDE’s. You do not need them, or rather, there is a light alternative that I want to show you and it’s ‘unixy’.

Its name is entr, it’s written in C, it’s small and simple. There are no configuration files and no installation steps, it just works™.

Let’s start with the classic example of rebuilding the project on change:

ls | entr make

How about running unit tests after certain files have changed?

fd . {src/,tests/} -t f | entr composer run test-unit

How about re-executing that SQL you’re working on?

fd . | entr mysql -h 12.345.67 -u sql-user -p somepassword < your_sql_script.sql

Basically, get a list of files you want to watch (I use ls and fd in the examples above) and pipe it to entr.

Where it shines

Local development environments where you want to quickly iterate with immediate feedback.

Where it doesn’t

Anything past local development environments. These kind of things are not maintainable in the long run, unless you’re a code golfer I guess.

Versioning your watchers

Want to version and alias your watchers so you don’t have to type out that long command everytime you start developing?

If this is you (it’s definitely me), then you probably want entree. A version controllable wrapper for entr that also aliases watchers. I created it a while back to scratch the itch I just described. I wrote about it too. You should use it. It has tab completion.