2.0.1 • Published 6 years ago
hapi-imagemin-proxy v2.0.1
hapi-imagemin-proxy
Image optimization proxy written in Node.js using hapi.
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 100pxhttp://localhost:5678/cat.gif,w100,h50
- Fit into 100px × 50px (keeping aspect ratio)http://localhost:5678/find-peace.png,jpg
- Convert PNG to JPGhttp://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
: Whensource
is an URL, these request options are passed to Wreck.cache
: Sets Hapi's route.cache optionsimagecache
:engine
: Catbox caching engine. Must support binary data, e.g.catbox-s3
. Default:require('catbox-memory')
options
: Engine specific options (optional)maxByteSize
: only forcatbox-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
- Use cjpeg-dssim for JPG optimization
- Rewrite using async/await to support hapi@v17.x.x