Run a command, watch the filesystem, stop the process on file change and then run the command again...
You can install this command line tool with npm like this:
npm install -g hubmon
hubmon
must be used as a prefix before the command you want to run.
Here's an example on how to use hubmon
with a command like ls -la src
:
hubmon ls -la src
In this example, hubmon
will:
- watch the filesystem for changes
- run the command
ls -la src
On each filesystem change, hubmon
will:
- kill the process if it's still running
- run the command
ls -la src
again
NOTE: Killing the process if it's still running is very useful if you command runs an HTTP server for example.
By default, all files (except dotfiles) are watched (with the **/*
glob pattern).
If you want to only watch some files, you can use a different glob pattern with the --watch
option (or its short -w
alias) like this:
hubmon --watch '*.txt' ls -la src
WARNING: the quote around the glob pattern is important.
You can pass multiple patterns by join them with a comma like this:
hubmon --watch '*.txt,*.sql' ls -la src
If you want to ignore some files, you can use patterns prefixed with !
.
Here's an example where you watch all files in src
but not the .sql
files:
hubmon --watch 'src/**/*,!src/**/*.sql' ls -la src
Under the hood, hubmon
uses picomatch for glob patterns, please refer to their docs for more details.
If you often use hubmon
with commands like node
, python
or ruby
, it can be nice to set some aliases like these:
alias wnode='hubmon node'
alias wpython='hubmon python'
alias wruby='hubmon ruby'
This way, in a few keystrokes, you can add the letter w
(like watch) at the beginning of your command to trigger hubmon's watching mechanism:
wnode my-script.js
If you're using Node.js with volta, we have a special trick for you.
By default, the way volta handles automatic version switch would break.
We added some special code so the versions you defined for npm
, yarn
and node
are the right one.