我无法让gulp-imagemin 5.2.1使用默认设置中的其他插件。我需要压缩jpegs比默认的jpegtran插件更多地使用无损压缩。我想尝试使用imagemin-jpeg-recompress 5.1.0。这是我的一项任务:
var imagemin = require('gulp-imagemin');
var imageminJpegRecompress = require('imagemin-jpeg-recompress');
gulp.task('imagemin', function(){
return gulp.src(['./app/img/**'], {base:'app'})
.pipe(plumber({errorHandler: onerror}))
.pipe(imagemin({
plugins:[imageminJpegRecompress({
quality: 'low'
})]
}))
.pipe(gulp.dest('dist/app/'));
});
当我运行这个时,我得到了完全相同的图像,之后没有改变压缩的方式。看起来它甚至看不到"插件"选项或者它仍然可以在jpegRecompress之后运行所有默认插件。我应该如何调用gulp文件中的imagemin插件?
注意:他们确实更改了"插件"选项。 "插件"选项曾被命名'使用"。
答案 0 :(得分:0)
你是正确的"使用"选项已经重命名为" plugins"但是在我自己查看这个问题之后,我意识到gulp-imagemin(你正在使用的那个)与独立的imagemin在插件配置方面的语法略有不同。*
这应该有效:
gulp.task('imagemin', function() {
return gulp.src(['./app/img/**'], {base:'app'})
.pipe(plumber({errorHandler: onerror}))
.pipe(imagemin([
imagemin.gifsicle(),
imageminJpegRecompress({ quality: 'low' }),
imagemin.optipng(),
imagemin.svgo()
]))
.pipe(gulp.dest('dist/app'));
});
请注意,由于我传入自定义插件数组,因此我按照gulp-imagemin Github页面上的说明声明了其他文件类型的插件。在这种情况下,我只声明默认值,但jpeg-recompress除外,它的选项我在一个对象中传递。
来源:
API Change with diff example
Relevant discussion on the project's issue tracker
*除版本外: imagemin的最新版本是5.2.x,而gulp-imagemin在3.0.x时有单独的版本控制。更令人困惑的是,imagemin-jpeg-recompress是5.1.0;这些组合帮助不大,但在每个项目的页面上查找差异时可能会有所帮助。