docs: function moduleWatchTask(taskname, fn) {
      var module = this;
      var fulltaskname = module.name + '-' + taskname + '-watch';
  
      module.task(taskname + '-watch', null, function(cb) {
  
        var w = fn();
  
        if(!w) {
          throw new Error('No options returned from watch: ' + taskname);
        }
  
        if(!w.glob) {
          throw new Error('No glob watch property in options: ' + taskname);
        }
  
        w.tasks = w.tasks || [taskname];
  
        var i = w.tasks.length;
  
        while(i--) {
          w.tasks[i] = module.name + '-' + w.tasks[i];
        }
  
        var watcher =  gulp.watch(w.glob, w.tasks);
  
        function onEvent(event) {
          console.log(event);
        }
  
        watcher.on('change', function(event) {
          console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
          var exec = require('child_process').exec;
  
          exec('growlnotify --image gulp-tasks/run.png -n angular-project-template -m "' + module.name + '-' + taskname + ': build triggered."')
        });
  
        cb();
      }, true);
  
      module.watchTasks.push(fulltaskname);
    }