В новых версиях (3.x) gulp-imagemin решение выше не работает. Причина в том, что они изменили, как плагины объявлены и настроены на синтаксис массива и аргументы с диапазоном.
Изменение API является documented in Release 3.0.0
gulp.task('default',() => {
return gulp.src('src/images/*')
- .pipe(imagemin({
- interlaced: true,
- progressive: true,
- optimizationLevel: 5,
- svgoPlugins: [{removeViewBox: false}]
- }))
+ .pipe(imagemin([
+ imagemin.gifsicle({interlaced: true}),
+ imagemin.mozjpeg({progressive: true}),
+ imagemin.optipng({optimizationLevel: 5}),
+ imagemin.svgo({plugins: [{removeViewBox: false}]})
+ ]))
.pipe(gulp.dest('dist/images'));
});
отмечая, что также «если вы передаете в массив плагинов вам необходимо явно передать в каждый плагин вы хотите, а не только те, которые вы хотите изменить параметры для. "
Новые версии imagemin-jpeg-recompress (5.x) следуют этому API.
Собираем все вместе, с помощью плагинов по умолчанию (кроме jpegtran, которые мы отменяют с Jpeg-Recompress), ответ выше, может быть в следующем формате:
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var imageminJpegRecompress = require('imagemin-jpeg-recompress');
gulp.task('optimize', function() {
return gulp.src('src/images/*')
.pipe(imagemin([
imagemin.gifsicle(),
imageminJpegRecompress({
loops:4,
min: 50,
max: 95,
quality:'high'
}),
imagemin.optipng(),
imagemin.svgo()
]))
});
Relevant discussion on gulp-imagemin github issue tracker
Спасибо за ссылки примечания к выпуску. Я пропустил это изменение еще в мае и не получил новый синтаксис после часа поиска. – joemaller
Да, спасибо! Я искал часы на этом, я подтверждаю, что последний работал идеально. – CodeUK