smartwatch

CLI to monitor folder tree for file changes and run commands with file-related parameters

Usage no npm install needed!

<script type="module">
  import smartwatch from 'https://cdn.skypack.dev/smartwatch';
</script>

README

smartwatch

A command line tool that monitors folder tree and executes configurable commands based on file modification type and file glob. It depends on the fireworm package

Usage:

smartwatch [a|c|r|s] [glob] [command]

Options:

a: execute [command] whenever a file matching the glob is added  
c: execute [command] whenever a file matching the glob is changed  
r: execute [command] whenever a file matching the glob is removed  
s: if present, the output of [command] will be silenced  
glob: a glob, i.e. **/*.js  
command: command to be executed when file matching the glob is added/changed/removed.  
It can accept parameters like this: #{path}

Available parameters are:

path: full path and filename
root: file root
dir: path without the filename
rel: path without the filename and topmost folder
base: file name and extension
ext: just file extension
name: just file name

Multiple acrs/glob/command sets can be defined by adding additional parameters

Example:

smartwatch acr src/**/*.jade "jade -P #{path} -o build#{rel}"

This command will monitor the 'src' folder and compile all jade templates into the build folder, retaining the original folder structure.

The src/house/room/closet.jade will be compiled into build/house/room/closet.html

Smartwatch can be used for:

  • source code compilation
  • testing
  • linting
  • minification
  • live reload
  • and many more

Sample package.json using parallelshell:

"scripts": {
"watch:jade": "smartwatch acs src/**/*.jade "jade -P #{path} -o build#{rel}"",
"watch:coffee": "smartwatch acs src/**/*.coffee "coffee --compile --map -o build#{rel} #{path}"",
"watch:sass": "smartwatch acs src/**/*.sass "node-sass #{path} build#{rel}"",
"watch:spec": "smartwatch ac test/**/*.js mocha",
"watch:all": "parallelshell "npm run watch:jade" "npm run watch:coffee" "npm run watch:sass" "npm run watch:spec""
},

Now execute "npm run watch:all" to start all your watchers