Посмотрел скринкаст Ильи по 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' |
Поиск в гугле не помог.