我很难让gulp ImageMin5.2.1使用不同于默认插件的插件。我需要比默认的jpegtran插件的无损压缩更多地压缩jpegs。我想试着使用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插件?
注意:他们确实更改了"plugins“选项。"plugins“选项过去被命名为”use“。
发布于 2016-07-08 09:45:54
你说得对,"use“选项已经被重新命名为"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页面上的说明为其他文件类型声明插件。在本例中,我只声明了缺省值,除了jpeg-recompress,我将其选项传递到一个对象中。
资料来源:
Relevant discussion on the project's issue tracker
*在版本方面: imagemin的最新版本是5.2.x,而gulp-imagemin有单独的版本,为3.0.x。更令人迷惑的是,imagemin-jpeg-recompress是5.1.0;这些组合不会有太大帮助,但在每个项目页面上查找差异时可能会有所帮助。
https://stackoverflow.com/questions/38001293
复制相似问题