0

我无法让 gulp-imagemin 5.2.1 使用与默认值不同的插件。我需要压缩 jpeg,而不是默认 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 插件?

注意:他们确实更改了“插件”选项。“插件”选项曾经被命名为“使用”。

4

1 回答 1

0

您是正确的,“使用”选项已重命名为“插件”,但是在我自己研究了这个问题之后,我意识到 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
项目问题跟踪器的相关讨论

*除了版本:最新版本的 imagemin 是 5.2.x,而 gulp-imagemin 有单独的版本,在 3.0.x。更令人困惑的是,imagemin-jpeg-recompress 是 5.1.0;这些组合没有多大帮助,但在查找每个项目页面上的差异时可能会有所帮助。

于 2016-07-08T01:45:53.990 回答