gulp-imagemin没有使用插件选项

时间:2016-06-23 20:32:09

标签: gulp-imagemin imagemin

我无法让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插件?

注意:他们确实更改了"插件"选项。 "插件"选项曾被命名'使用"。

1 个答案:

答案 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;这些组合帮助不大,但在每个项目的页面上查找差异时可能会有所帮助。