Middleman ImageOptim Extension

Serving big images is for numb-skulls! Compress and optimise your imagery during middleman build by running image_optim over it. Aww yiss!

Build Status Code Climate Gem Version Dependency Status


Installation

Go set up the image_optim external utilities, then;

Middleman < 4.0

gem 'middleman-imageoptim'

Middleman ≥ 4.0

gem "middleman-imageoptim", :git => "https://github.com/plasticine/middleman-imageoptim", :branch => "master"

Usage

activate :imageoptim

You can also configure the extension in the usual fashion, by passing a block to :activate Below is the default configuration showing all available options;

activate :imageoptim do |options|
  # Use a build manifest to prevent re-compressing images between builds
  options.manifest = true

  # Silence problematic image_optim workers
  options.skip_missing_workers = true

  # Cause image_optim to be in shouty-mode
  options.verbose = false

  # Setting these to true or nil will let options determine them (recommended)
  options.nice = true
  options.threads = true

  # Image extensions to attempt to compress
  options.image_extensions = %w(.png .jpg .gif .svg)

  # Compressor worker options, individual optimisers can be disabled by passing
  # false instead of a hash
  options.advpng    = { :level => 4 }
  options.gifsicle  = { :interlace => false }
  options.jpegoptim = { :strip => ['all'], :max_quality => 100 }
  options.jpegtran  = { :copy_chunks => false, :progressive => true, :jpegrescan => true }
  options.optipng   = { :level => 6, :interlace => false }
  options.pngcrush  = { :chunks => ['alla'], :fix => false, :brute => false }
  options.pngout    = { :copy_chunks => false, :strategy => 0 }
  options.svgo      = {}
end

Changelog

0.2.1
  • Minor bugfix for 3.3.9 support.
0.2.0
  • Big cleanup to codebase.
  • More tests.
  • Caching between builds using a manifest file to skip over already-compressed assets (thanks for your work on this @jagthedrummer).
  • Updates image_optim gem to latest version (0.20.2).
  • Adds dependency on image_optim_pack to ensure that binaries are available.
0.1.4
  • Respect plugin ordering in config.rb (thanks @jeffutter) #8.
0.1.3
  • Fix missing license in gemspec.
0.1.2
  • Minor bugfix.
0.1.1
  • Remove legacy requirement for padrino.
0.1.0
  • Complete refactor and clean-up.
  • Introduced an options class. options now work (lol, yay!), thanks @andrew-aladev for your help there.
  • Change of extension activation name from :image_optim to :imageoptim for consistency with internal naming.