【问题标题】:gulp-imagemin not using plugins optiongulp-imagemin 不使用插件选项
【发布时间】:2016-10-26 08:36:42
【问题描述】:

我无法让 gulp-imagemin 5.2.1 使用与默认值不同的插件。我需要压缩 jpeg,而不是默认 jpegtran 插件对其无损压缩所做的工作。我想尝试使用 imagemin-jpeg-recompress 5.1.0。这是我的 gulp 任务:

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 插件?

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

【问题讨论】:

    标签: gulp-imagemin imagemin


    【解决方案1】:

    您是正确的,“使用”选项已重命名为“插件”,但是在我自己研究了这个问题之后,我意识到 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;这些组合没有太大帮助,但在查找每个项目页面上的差异时可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2016-10-18
      • 2017-02-15
      • 1970-01-01
      相关资源
      最近更新 更多