Hapi proxy for serving optimized images
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
lib
test
.editorconfig
.eslintignore
.eslintrc
.gitignore
.snyk
.travis.yml
LICENSE.txt
README.md
package-lock.json
package.json

README.md

hapi-imagemin-proxy

Image optimization proxy written in Node.js using hapi.

Build Status Current Version

Allows you to resize an image and change image formats. Output is always optimized for the smallest file size.

  • http://localhost:5678/cat.gif,w100 - Resize to a width of 100px
  • http://localhost:5678/cat.gif,w100,h50 - Fit into 100px × 50px (keeping aspect ratio)
  • http://localhost:5678/find-peace.png,jpg - Convert PNG to JPG
  • http://localhost:5678/find-peace.png,w100,h50,jpg - All combined

Usage

Requires GraphicsMagick to be installed (e.g. on Mac OS X via Homebrew: brew install graphicsmagick).

npm install hapi-imagemin-proxy

Afterwards, include hapi-imagemin-proxy as plug-in into your existing Hapi project (a demo server can be found in /example):

const Hapi = require('hapi');
const server = new Hapi.Server();

server.register({
    plugin: require('hapi-imagemin-proxy'),
    options: {
        source: '/path/to/images',
        cache: {},
        imageCache: {
            engine: require('catbox-memory'),
            options: {
                expiresIn: 3600000
            }
        },
        plugins: [
            imageminGm.resize(),
            imageminGm.convert(),
            imageminJpegoptim({ progressive: true, max: 75 }),
            imageminPngquant(),
            imageminGifsicle({ optimizationLevel: 3 }),
            imageminSvgo()
        ]
        // ...
    }
}, function (err) {

    if (err) {
        return {
            console.error(err);
        }
    }
});

Options

  • source: Location of the images to be served. Can be either a local path or a URL (required).

  • wreck: When source is an URL, these request options are passed to Wreck.

  • cache: Sets Hapi's route.cache options

  • imagecache:

    • engine: Catbox caching engine. Must support binary data, e.g. catbox-s3. Default: require('catbox-memory')
    • options: Engine specific options (optional)
      • maxByteSize: only for catbox-memory, default: 104857600 (100MB)
      • expiresIn: Cache time-to-live in milliseconds, default: 3600000 (one hour)
  • plugins: Array of imagemin optimization plug-ins, defaults:

    imageminJpegoptim({ progressive: true, max: 75 }),
    imageminPngquant(),
    imageminGifsicle({ optimizationLevel: 3 }),
    imageminSvgo()
    

TODO

License

MIT