code: function watchJSTask(gulp, s, config, callback, startFun, endFun) {
      gulp.watch(s.source || s, {cwd:config.root}, function(evt) {
          //如果已存在当前task，则直返回
          var task = watchTaskCache(evt.path, 'js');
          //用缓存，发现过一段时间task就不能跑了！！！
          if(!task) {
              task = watchTaskCache(evt.path, 'js', {});
              task.name = evt.path;
              task.path = evt.path;      
              task.destPath = path.resolve(config.root, config.dest || '', config.jsDest || '', s.dest || ''); //js目标构建目录
  
              //debug模式下，文件按原本的路径拷贝
              if(config.debug) {
                  task.path = task.path.replace(/\\/g,'/');
                  var mdpath = s.subPath || s.dest || '';             
                  if(mdpath) {
                      var mindex = task.path.indexOf(mdpath);
                      if(mindex >= 0) {
                          //截取文件后面的部分，从而保证部署和原路径中间段一致
                          task.destPath = path.join(task.destPath, path.dirname(task.path).substr(mindex + mdpath.length));
                      }
                  }
              }
              task.dest = path.join(task.destPath, path.basename(task.path));   
              //生成监听构建任务
              _watchJSCreateTask(gulp, task, s, config, startFun, endFun);         
          }
          callback && callback(task, s, evt);
      });
  }
docs: 监控JS文件