使用Gulp-imagemin和imagemin-jpeg-recompress插件?

时间:2015-06-19 20:49:26

标签: jpeg gulp gulp-imagemin

我只是尝试使用Gulp来简化图像优化。我发现imagemin-jpeg-recompressgulp-imagemin附带的默认优化器更能降低JPG。我想知道是否有办法使用gulp-imagemin但是换出了jpegtran的{​​{1}}插件。

我似乎找不到任何关于这可能如何协同工作的详细文档。

2 个答案:

答案 0 :(得分:4)

我要回答我自己的问题。我可能错了,但似乎这是一个简单的过程。简单地require插件(在这种情况下,我想使用imagemin-jpeg-recompress插件)。然后通过imagemin的{​​{1}}属性指定要在use内使用的插件。我相信这会覆盖imagemin附带的捆绑jpegtran优化程序。

imagemin

答案 1 :(得分:4)

在gulp-imagemin的新版本(3.x)中,上述解决方案不起作用。原因是他们改变了如何声明插件并将其配置为数组语法和范围参数。

API更改为documented in Release 3.0.0

XXX *

同时注意到“如果您传入一系列插件,则需要明确传入您想要的每个插件,而不仅仅是您想要更改选项的插件。”

新版本的imagemin-jpeg-recompress(5.x)遵循此API。

将所有内容放在一起,使用默认插件(jpegtran除外,我们用jpeg-recompress覆盖),上面的答案可以格式化如下:

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'));
 });

Relevant discussion on gulp-imagemin github issue tracker