code: function runHTMLTaskStream(gulp, s, config, startFun, endFun) {    
      var destPath = path.resolve(config.root, config.dest || '');
      var jsDestPath = path.resolve(destPath, config.jsDest || ''); //js目标构建目录
      var cssDestPath = path.resolve(destPath, config.cssDest || ''); //css目标构建目录
      var htmlDestPath = path.resolve(destPath, config.htmlDest || ''); //html目标构建目录
      var fileDestPath = path.resolve(destPath, config.fileDest || ''); //file目标构建目录
  
      if(s.__dest) {
          var dest = s.__dest;
      }
      else {
          var dest = path.resolve(destPath, config.htmlDest || '', s.dest || '');
      }
  
      var stream = gulp.src(s.source || s, {cwd:config.root, base: s.base || ''});
      if(startFun && typeof startFun == 'function') {
          stream = startFun(stream, s);
       }
  
       //为了修改stream中的filepath为发布路径，，以用计算相对路径
       stream = stream.pipe(gulp.dest(dest));
  
       stream = stream.pipe(parse.parse({
              "type": 'html',
              "debug": config.debug,
              "root": config.root,
              "dest": dest,
              "destPath": destPath,
              "jsDestPath": jsDestPath,
              "cssDestPath": cssDestPath,
              "htmlDestPath": htmlDestPath,
              "fileDestPath": fileDestPath,
              "urlMaps": config.urlMaps || [],
              "config": s
          })).pipe(gulp.dest(dest));
  
       if(s.rename) {
          stream = stream.pipe(rename(s.rename));
       }
       if(endFun && typeof endFun == 'function') {
          stream = endFun(stream, s);
       }
       return stream.pipe(gulp.dest(dest));
  }
docs: html文件流任务处理