Run a command when a file add/update event occurs
CoffeeScript Makefile JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
examples
lib
src
test
.gitignore
LICENSE
Makefile
README
package.json

README

`8.`888b                 ,8' .8.           ,o888888o.    8 8888        8
 `8.`888b               ,8' .888.         8888     `88.  8 8888        8
  `8.`888b             ,8' :88888.     ,8 8888       `8. 8 8888        8
   `8.`888b     .b    ,8' . `88888.    88 8888           8 8888        8
    `8.`888b    88b  ,8' .8. `88888.   88 8888           8 8888        8
     `8.`888b .`888b,8' .8`8. `88888.  88 8888           8 8888        8
      `8.`888b8.`8888' .8' `8. `88888. 88 8888           8 8888888888888
       `8.`888`8.`88' .8'   `8. `88888.`8 8888       .8' 8 8888        8
        `8.`8' `8,`' .888888888. `88888.  8888     ,88'  8 8888        8
         `8.`   `8' .8'       `8. `88888.  `8888888P'    8 8888        8


"watch changes"

  Watch for changes to files within the current directory and run a command
  when they occur.

  Wach is really fast, the command is run as soon as the file changes, no
  polling delay.

  Comes with two executables: `wach` and `wachs`.

  The `wach` utility will run any command (or inline shell script) whenever
  files in the current directory are updated.

  The `wachs` (there's an "s" on the end) utility does the same thing but for
  commands that launch a long running process like a web server. It'll kill
  the current process and launch a new one.

Requirements

  Only runs on OS X >=10.7 (Lion and up)

Install

  npm install wach

Examples

  # Run `make` every time a file in the current directory is updated/added
  wach make

  # Compile and run on every change
  wach "gcc hello.c && ./a.out"

  # Only watch for changes to coffee files, compile the one that changed
  wach -o *.coffee, coffee -c {}

  # Run the tests every time a ruby file changes
  TEST_DIR=generators wach -o **/*.rb, bundle exec rake test

  # Restart a node app any time a js file changes
  wachs -o *.js, node server.js

Node API

  wach = require('wach');
  wach('.', function(path) {
    return console.log("something happened to " + path + "!");
  })

Contributing

  Patches welcome. Especially if you'd like to re-write this in plain
  JavaScript. Just fork and make a pull request

Other similar projects:

  Patrick Mueller's wr
  https://github.com/pmuellr/wr

  steakout
  http://michael-mccracken.net/software/stakeout.tgz

  steakout.rb
  http://www.pragmaticautomation.com/cgi-bin/pragauto.cgi/Monitor/StakingOutFileChanges.rdoc

  the --watch flag for coffeescript
  http://jashkenas.github.com/coffee-script/#usage

  unix watch
  http://en.wikipedia.org/wiki/Watch_(Unix)

  TJ Holowaychuk's watch
  https://github.com/visionmedia/watch

  Isaac Z. Schlueter's node-supervisor
  https://github.com/isaacs/node-supervisor

  David Trejo's run.js
  https://github.com/DTrejo/run.js

  Gabriel Gironda's kqfm
  https://github.com/gabrielg/kqfm

  Mark Bao's watchdir
  https://github.com/markbao/watchdir