code: function combineSpriteTasks(spriteTaskArray) {
  
      var combinedStyleSheetArray = [],
          combinedStyleObjList = {
              length: 0
          },
          combinedFileName,
          combinedSpriteTask;
  
      //combinedFileName = DEFAULT_COMBINE_CSS_NAME;
      //output.combine  扩展配置类型, 可以指定输出的文件名, 如: "combine": "exam_all.css" , 精灵图则为: sprite_exam_all.png
      combinedFileName = typeof spriteConfig.output.combine == 'string' ? spriteConfig.output.combine : DEFAULT_COMBINE_CSS_NAME;
      // combineFileName = path.resolve(combineFileName);
  
      spriteTaskArray.forEach(function(spriteTask) {
  
          // var spriteTask = { // an SpriteTask
          //     cssFileName: cssFileName, // css 文件的路径
          //     styleSheet: readStyleSheet(cssFileName), // css 文件的内容
          //     styleObjList: null, // 搜集到的需要合并图片的样式和相关图片信息(大小宽高等)
          // };
  
          var styleObjList = spriteTask.styleObjList,
              styleObj,
              existSObj;
  
          for (var url in styleObjList) {
              if (url === 'length') {
                  continue;
              }
              styleObj = styleObjList[url];
              if (existSObj = combinedStyleObjList[url]) {
                  existSObj.cssRules = existSObj.cssRules.concat(styleObj.cssRules);
              } else {
                  combinedStyleObjList[url] = styleObj;
                  combinedStyleObjList.length++;
              }
          }
  
          combinedStyleSheetArray.push(spriteTask.styleSheet);
      });
  
      combinedSpriteTask = {
          cssFileName: combinedFileName,
          styleSheetArray: combinedStyleSheetArray,
          styleObjList: combinedStyleObjList
      }
  
      return [combinedSpriteTask];
  }
docs: **************************************************************** 6. 合并所有 spriteTask **************************************************************** 
  合并所有 spriteTask
  @param  {Array} spriteTaskArray
  @return {Array} 转换后的 SpriteTask 数组, 只会包含一个 SpriteTask