const plumber = require('gulp-plumber'), //(prevent gulp from exit)
const plumberOptions = {
handleError: function (err) {
console.log(err);
this.emit('end');
}
};
.pipe(plumber(plumberOptions))
// Task for svg-sprite
gulp.task('svg-sprite', function () {
return gulp.src(paths.src.svgIcons)
.pipe(svgmin({
js2svg: {
pretty: true
}
}))
// remove all fill, style and stroke declarations in out shapes
.pipe(cheerio({
run: function ($) {
$('[fill]').removeAttr('fill');
$('[stroke]').removeAttr('stroke');
$('[style]').removeAttr('style');
},
parserOptions: {xmlMode: true}
}))
// cheerio plugin create unnecessary string '>', so replace it.
.pipe(replace('>', '>'))
// build svg sprite
.pipe(svgSprite({
mode: {
symbol: {
sprite: "../sprite.svg"
}
}
}))
.pipe(gulp.dest(paths.src.imgFolder));
});
gulp.task('js', function (done) {
gulp.src('entry file')
.pipe(webpackStream(args.production ? webpackDevConfig : webpackProdConfig, webpack))
.pipe(gulp.dest('dest path'));
done();
});
// Таск для оптимизации изображений
gulp.task('img:prod', function () {
return gulp.src(path.src.img) //Выберем наши картинки
.pipe(debug({title: 'building img:', showFiles: true}))
.pipe(plumber(plumberOptions))
.pipe(gulp.dest(path.prod.img)) //Копируем изображения заранее, imagemin может пропустить парочку )
.pipe(imagemin([
imagemin.gifsicle({interlaced: true}),
imageminJpegRecompress({
progressive: true,
max: 80,
min: 70
}),
imageminPngquant({quality: '80'}),
imagemin.svgo({plugins: [{removeViewBox: true}]})
]))
.pipe(gulp.dest(path.prod.img)); //И бросим в prod отпимизированные изображения
});