node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey »



Optimize PNG, JPEG, GIF, SVG images with gulp task.

Build Status NPM version Dependency Status devDependency Status

gulp-image result


$ npm install --save-dev gulp-image

External Dendencies

  • brew install libjpeg libpng on macOS
  • apt-get install -y libjpeg libpng on Ubuntu


This is an example of gulpfile.js.

const gulp = require('gulp');
const image = require('gulp-image');
gulp.task('image', function () {
gulp.task('default', ['image']);

You can pass an object to image() as argument such as following:

gulp.task('image', function () {
      pngquant: true,
      optipng: false,
      zopflipng: true,
      jpegRecompress: false,
      mozjpeg: true,
      guetzli: false,
      gifsicle: true,
      svgo: true,
      concurrent: 10

Set false for optimizers which you don't want to apply. And you can set concurrent option to limit the max concurrency in execution.

You can configure parameters applied to each optimizers such as following:

options: {
  optipng: ['-i 1', '-strip all', '-fix', '-o7', '-force'],
  pngquant: ['--speed=1', '--force', 256],
  zopflipng: ['-y', '--lossy_8bit', '--lossy_transparent'],
  jpegRecompress: ['--strip', '--quality', 'medium', '--min', 40, '--max', 80],
  mozjpeg: ['-optimize', '-progressive'],
  guetzli: ['--quality', 85],
  gifsicle: ['--optimize'],
  svgo: ['--enable', 'cleanupIDs', '--disable', 'convertColors']


MIT © Shogo Sensui