Gulp 使用 imagemin 优化图像

标签 gulp gulp-imagemin imagemin

我正在尝试使用 imagemin Gulp 优化我的图像

https://www.npmjs.com/package/gulp-image-optimization

我很难找到可以显示确切参数和不同选项的好文档。目前我的优化并没有太多收获:

var imageop = require('gulp-image-optimization');
var pngquant = require('imagemin-pngquant');
var imageminJpegoptim = require('imagemin-jpegoptim');

var baseUrl = "web/assets/";
var imgSrc = baseUrl + "src/images/";
var imgDist = baseUrl + "dist/images/";

gulp.task('img', function(cb) {
    gulp.src([imgSrc + '**/*.png', imgSrc + '**/*.jpg', imgSrc + '**/*.gif', imgSrc + '**/*.jpeg'])
        .pipe(imageop({
            optimizationLevel: 10,
            progressive: true,
            interlaced: true,
            use: [pngquant(), imageminJpegoptim()]
        }))
        .pipe(gulp.dest(imgDist)).on('end', cb).on('error', cb);
});

我是否遗漏了配置中的某些内容?

最佳答案

我假设您有理由期待比您得到的更显着的尺寸减小。在那种情况下,我敢打赌问题出在旧技术上。

您正在使用的 gulp-image-optimization 似乎依赖于旧的 imagemin,它没有将每种类型的优化分解为它自己的插件(我说“出现”是因为它已经有好几年了,这就是 gulp-image-optimization 文档中反射(reflect)的内容,如果我没记错的话,这就是 imagemin 过去的工作方式) .

这几天推荐的插件,链接在imagemin中的那个。的文档是 gulp-imagemin .

使用 gulp-imagemin,您的基本设置类似于

const gulp = require('gulp'),
      imagemin = require('gulp-imagemin');

gulp.task('default', (cb) =>
    gulp.src('src/images/*')
        .pipe(imagemin())
        .pipe(gulp.dest('dist/images')).on('end', cb).on('error', cb)
);

(该代码直接取自 gulp-imagemin 文档,添加了错误回调。)

gulp-imagemin 默认包含用于 png(optipng)和 jpg(jpegtran)优化的插件。

关于Gulp 使用 imagemin 优化图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42255739/

相关文章:

javascript - 用 gulp/imagemin 替换子文件夹中的文件

Gulp Imagemin 未完成

laravel - 当 npm 我 imagemin 说自己没有安装?警告 img-loader@3.0.0 需要 imagemin@^5.0.0 的同级但没有安装

javascript - 您可以在构建时压缩 Angular 图像 Assets 吗?

amazon-web-services - 将 Grunt 或 Gulp 与 OpsWorks 结合使用

bower - 如何将Bower与Gulp.js集成?

gulp - 我从 gulp 中收到错误 - JPEG 支持未编译

javascript - CentOS 上的 Node.js imagemin

javascript - 更改 Gulp 任务中的 BowerFiles() 注入(inject)路径

javascript - Gulp图像优化破坏图像