code: function runFileTaskStream(gulp, s, config, startFun, endFun) {
      if(s.__dest) {
          var dest = s.__dest;
      }
      else {
          var fileDestPath = path.resolve(config.root, config.dest || '', config.fileDest || ''); //file目标构建目录
          var dest = path.join(fileDestPath, s.dest || '');
      }
      var stream = gulp.src(s.source || s, {cwd:config.root, buffer: typeof s.buffer == 'undefined'?true:s.buffer, base: s.base || ''});
       //.pipe(gulp.dest(dest));
       if(startFun && typeof startFun == 'function') {
          stream = startFun(stream, s);
       }
  
       //如果有限制文件大小,单位KB
       if(s.maxSize) {
          stream = stream.pipe(checkFileSize(s));
       }
  
       if(s.concat && !config.debug) {
          stream = stream.pipe(gulpconcat(s.concat));
      }
  
       if(s.rename)
          stream = stream.pipe(rename(s.rename));
  
       //给文件名加扩展
      if(!config.debug && (s.md5 || s.expand)) {
          //把原文件拷贝一份,以备其它地方引用//不 能去掉，否则inline可能会出问题
          //所以其它地方引用，只能引用rename/concat之后的
          stream = stream.pipe(gulp.dest(dest));
          //加上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));
  }
docs: 普通文件流处理