src/ispriter.js
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];
}
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];
}
**************************************************************** 6. 合并所有 spriteTask **************************************************************** 
合并所有 spriteTask
@param  {Array} spriteTaskArray
@return {Array} 转换后的 SpriteTask 数组, 只会包含一个 SpriteTask