DEPRECATED
please use: https://github.com/webpack-contrib/image-minimizer-webpack-plugin/
image-webpack-loader
Image loader module for webpack
Minify PNG, JPEG, GIF, SVG and WEBP images with imagemin
Issues with the output should be reported on the imagemin issue tracker.
Install
$ npm install image-webpack-loader --save-dev
Install in container
node:12-buster
No additional preparations required.
All dependencies will be compiled automatically.
Not recommended because of large image size (~1 GB).
node:12-buster-slim
Prepare script:
apt-get update
apt-get install -y --no-install-recommends autoconf automake g++ libpng-dev make
Recommended container image.
node:12-alpine
Prepare script:
apk add --no-cache autoconf automake file g++ libtool make nasm libpng-dev
Not recommended because of long build time.
Benchmark
Container distro | Pull time | Build time | Total time |
---|---|---|---|
node:12-buster |
42 seconds | 77 seconds | 119 seconds |
node:12-buster-slim |
11 seconds | 103 seconds | 114 seconds |
node:12-alpine |
8 seconds | 122 seconds | 130 seconds |
libpng issues
Installing on some versions of OSX may raise errors with a missing libpng dependency:
Module build failed: Error: dyld: Library not loaded: /usr/local/opt/libpng/lib/libpng16.16.dylib
This can be remedied by installing the newest version of libpng with homebrew:
brew install libpng
Usage
In your webpack.config.js
, add the image-loader, chained after the file-loader:
rules: [{
test: /\.(gif|png|jpe?g|svg)$/i,
use: [
'file-loader',
{
loader: 'image-webpack-loader',
options: {
bypassOnDebug: true, // [email protected]
disable: true, // [email protected] and newer
},
},
],
}]
For each optimizer you wish to configure, specify the corresponding key in options:
rules: [{
test: /\.(gif|png|jpe?g|svg)$/i,
use: [
'file-loader',
{
loader: 'image-webpack-loader',
options: {
mozjpeg: {
progressive: true,
},
// optipng.enabled: false will disable optipng
optipng: {
enabled: false,
},
pngquant: {
quality: [0.65, 0.90],
speed: 4
},
gifsicle: {
interlaced: false,
},
// the webp option will enable WEBP
webp: {
quality: 75
}
}
},
],
}]
Comes bundled with the following optimizers, which are automatically enabled by default:
- mozjpeg — Compress JPEG images
- optipng — Compress PNG images
- pngquant — Compress PNG images
- svgo — Compress SVG images
- gifsicle — Compress GIF images
And optional optimizers:
- webp — Compress JPG & PNG images into WEBP
Each optimizers can be disabled by specifying optimizer.enabled: false
, and optional ones can be enabled by simply putting them in the options
If you are using Webpack 1, take a look at the old docs (or consider upgrading).
Options
Loader options:
bypassOnDebug (all)
Type: boolean
Default: false
Using this, no processing is done when webpack 'debug' mode is used and the loader acts as a regular file-loader. Use this to speed up initial and, to a lesser extent, subsequent compilations while developing or using webpack-dev-server. Normal builds are processed normally, outputting optimized files.
disable
Type: boolean
Default false
Same functionality as bypassOnDebug option, but doesn't depend on webpack debug mode, which was deprecated in 2.x. Basically you want to use this option if you're running [email protected] or newer.
For optimizer options, an up-to-date and exhaustive list is available on each optimizer repository: