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' |
Проблему нормально решить не удалось. Отказался от такой организации gulpfile.js
|
Часовой пояс GMT +3, время: 16:18. |