I've been surveying the Javascript tooling landscape recently.

One thing that's very common is to have daemon processes that watch files and 
perform some action on change. Consider the case where you want to write 
CoffeeScript, but compile it down to JavaScript and deploy that. During the 
development cycle, you want something to do this compilation as soon as you 
save a change so that when you refresh the browser you see the change (because 
the javascript has been updated).

With javascript, there can be a few different processing phases. e.g. 
CoffeeScript → JavaScript → compressed JavaScript → bundled JavaScript 
(combined into one file). You way want to use this final output during the 
development process.

Another case for this is continuous testing. A lot of the javascript testing 
tools require a html bootstrapping page that does something like set the test 
classpath and kick off the tests. You really want this to be generated, 
managing the “classpath” dynamically.

All of the maven javascript tooling plugins that do this hand roll their own 
daemon process management, which is usually just starting the process. 

There are non javascript cases for this too. 

For war development, it would be nice to have something like “processResources” 
run whenever an input file changes (as they may be filtered). For our html 
slides, I'd like them to be compiled to html whenever I changed the input 
markdown.

It strikes me that we may be able to come up with a solution that could turn 
almost any task into what I'm calling a “live task”. Since we know what the 
inputs are we could monitor them and trigger the task when they change, no 
matter what the task is doing. I suspect that would be the easy part though. 
Managing and providing control over these daemon processes would likely be the 
most costly to implement, as well as providing insight into what they are 
doing. 

Rather exciting possibility though. If I'm working in a java module with unit 
tests, I could just “liven” the test task for that module and achieve 
continuous testing (granted, you'd want to be plugged into a power source if 
you did this). I'm not aware of another tool that provides this feature 
generically, for any kind of task.

-- 
Luke Daley
Principal Engineer, Gradleware 
http://gradleware.com


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to