docs: function runJSTaskStream(gulp, s, config, startFun, endFun) {
      if(s.__dest) {
          var dest = s.__dest;
      }
      else {
          var jsDestPath = path.join(config.root, config.dest || '', config.jsDest || ''); //js目标构建目录
          var dest = path.join(jsDestPath, s.dest || '');
      }
      var stream = gulp.src(s.source || s, {cwd:config.root, base: s.base || ''});
      //初始化流源
      //stream = stream.pipe(jmrename.initSource());
  
      if(!config.debug) {
          stream = stream.pipe(parse.parse({
              "base": path.join(config.root,s.base || config.jsBase),
              "type": 'js',
              "debug": config.debug,
              "config": s,
              "root": config.root,
              "destPath": path.join(config.root, config.dest || '')
          }));
      }
       if(startFun && typeof startFun == 'function') {
          stream = startFun(stream, s);
       }
  
       if(s.concat && !config.debug){
          stream = stream.pipe(gulpconcat(s.concat));
      }
      if(s.rename){
         stream = stream.pipe(rename(s.rename));
      }
  
      //把原文件拷贝一份,以备其它地方引用//不 能去掉，否则inline可能会出问题
      //所以其它地方引用，只能引用rename/concat之后的
      stream = stream.pipe(gulp.dest(dest));
  
      //只有在非debug下才进行压缩
       if(!config.debug) {
          //uglify支持原配置参数，请参考:https://github.com/terinjokes/gulp-uglify#user-content-options
          stream = stream.pipe(uglify(s.uglify||{}));
       }     
  
      //给文件名加扩展
      if(!config.debug && (s.md5 || s.expand)) {        
          //加上md5或文件名扩展
          stream = stream.pipe(jmrename.changeFileName({"separator": config.separator, 'size': config.md5Size, 'md5': s.md5, 'expand': s.expand}));
      }
  
      if(endFun && typeof endFun == 'function') {
          stream = endFun(stream, s);
       }
  
      return stream.pipe(gulp.dest(dest))
       .pipe(cache.saveInfo(config));
       //.pipe(jmrename.endSource());
  }