我只是尝试使用Gulp来简化图像优化。我发现imagemin-jpeg-recompress比gulp-imagemin附带的默认优化器更能降低JPG。我想知道是否有办法使用gulp-imagemin
但是换出了jpegtran
的{{1}}插件。
我似乎找不到任何关于这可能如何协同工作的详细文档。
答案 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'));
});