Javascript-форум (https://javascript.ru/forum/)
-   Сборка проекта, утилиты (https://javascript.ru/forum/server-tools/)
-   -   Gulp, spritesmith и stream-combiner2 (https://javascript.ru/forum/server-tools/64057-gulp-spritesmith-i-stream-combiner2.html)

leshiple 18.07.2016 10:24

Gulp, spritesmith и stream-combiner2
 
Посмотрел скринкаст Ильи по gulp и захотел переписать свои таски.
gulpfile.js:
function lazyRequireTask(taskName, options) {
    options = options || {};
    options.taskName = taskName;
    gulp.task(taskName, function(callback) {
        let task = require(config.path.tasks + taskName).call(this, options);
        return task(callback);
    });
}


lazyRequireTask("img.sprite", {
    src: config.path.src.img.sprite + "*.*",
    destImg: config.path.build.img,
    destStyles: config.path.src.styles.helpers
});


img.sprite.js:
const $ = require("gulp-load-plugins")();
const combine = require("stream-combiner2").obj;
const gulp = require("gulp");
const fs = require('fs');
const buffer = require('vinyl-buffer');
const pngquant= require('imagemin-pngquant');
const config = require("../gulp.config");


module.exports = (options) => {
    let spriteData = $.spritesmith({
        imgName: "sprite.png",
        cssName: "_sprite.scss",
        cssFormat: "scss",
        padding: 10,
        cssTemplate: "sprite.hbs",
        cssVarMap: function(sprite){
            sprite.name = "s-" + sprite.name
        }
    });
    
    return () => {
        return combine(
            gulp.src(options.src),
            spriteData,
            spriteData.img
                .pipe(buffer())
                .pipe($.imagemin({
                    progressive: true,
                    svgoPlugins: [{removeViewBox: false}],
                    use: [pngquant()]
                }))
                .pipe(gulp.dest(options.destImg)),
            spriteData.css.pipe(gulp.dest(options.destStyles))
    
        ).on('error', $.notify.onError({
            title: "Error in img.sprite"
        }));
    }
};


Проблема в том что файл стилей и изображения выводятся в директорию для изображения и еще файл стилей копируется в свою правильную директорию. Не пойму как решить правильно проблему. Можно конечно после завершения задачи удалять избыточный файл стилей, но как то это костыльно.

P.S.
В процессе выполнения задачи в консоль выводится предупреждение:
Код:

(node:11368) DeprecationWarning: 'GLOBAL' is deprecated, use 'global'
Поиск в гугле не помог.

leshiple 25.07.2016 09:30

Проблему нормально решить не удалось. Отказался от такой организации gulpfile.js


Часовой пояс GMT +3, время: 16:18.