I\'m looking for simplest possible way to automatically recompile coffee scripts into JS.
Reading documentation but still having troubles to get exactly what I want.
Try jitter
https://github.com/TrevorBurnham/jitter
It watches a directory of .coffee files, and when it detects that a file has changed it automatically recompiles it to .js
jitter /path/to/coffee/dir /path/to/js/dir
I've been trying it out with a project using coffescript and sencha touch, it seems to work pretty well. Doesn't take care of the concatenation problem, but it's really simple to use for someone who just needs auto-compilation.
I have found the command-line coffeescript compiler to be poorly suited for complex project structures.
If you and your build process are as needy as I am, check out Grunt - http://gruntjs.com/
It allows for highly complex build processes - for example, you might
Tasks can be strung together, and watched files/folders are highly customizable as well.
This helped me (-o
output directory, -j
join to project.js, -cw
compile and watch coffeescript directory in full depth):
coffee -o web/js -j project.js -cw coffeescript
nodemon -x coffee server.coffee
does it for me.
Install nodemon
using npm install -g nodemon
The coffee script documentation provides an example for this:
Watch a file for changes, and recompile it every time the file is saved:
coffee --watch --compile experimental.coffee
If you have a particular script you want to execute, you could use the linux command dnotify: http://linux.die.net/man/1/dnotify
dnotify --all src/ --execute=command
Edit: I had some problems with the --execute part of dnotify - might be a bug, but this is what I got working:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`
That executed the compile command each time a file was modified.
If you append the command with an ampersand, like this:
dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
it will be started in a separate process. To get the process ID, you can use this:
ps ux | awk '/dnotify/ && !/awk/ {print $2}'
And then, you can kill the process by using something like this:
kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`
But if that's your objective (to kill by process name), you can do it in a simpler way by using:
killall dnotify