This is a fork of brotli-webpack-plugin that supports both gzip and brotli compression. I'm using it because the official compression plugin no longer works and there appears to be delays in patches. I'm using it to build both gzip and brotli compressed files for serving over ASP.Net core using the CompressedStaticFiles middleware.
This plugin compresses assets with Brotli compression algorithm using iltorb library for serving it with ngx_brotli or such.
npm install --save-dev brotli-gzip-webpack-plugin
var BrotliGzipPlugin = require('brotli-gzip-webpack-plugin');
module.exports = {
plugins: [
new BrotliGzipPlugin({
asset: '[path].br[query]',
algorithm: 'brotli',
test: /\.(js|css|html|svg)$/,
threshold: 10240,
minRatio: 0.8
}),
new BrotliGzipPlugin({
asset: '[path].gz[query]',
algorithm: 'gzip',
test: /\.(js|css|html|svg)$/,
threshold: 10240,
minRatio: 0.8
})
]
}
Arguments:
asset
: The target asset name. Defaults to'[path].br[query]'
.[file]
is replaced with the original asset file name.[fileWithoutExt]
is replaced with the file name minus its extension, e.g. thestyle
ofstyle.css
.[ext]
is replaced with the file name extension, e.g. thecss
ofstyle.css
.[path]
is replaced with the path of the original asset.[query]
is replaced with the query.
test
: All assets matching this RegExp are processed. Defaults to every asset.threshold
: Only assets bigger than this size (in bytes) are processed. Defaults to0
.minRatio
: Only assets that compress better that this ratio are processed. Defaults to0.8
.
Optional arguments for Brotli (see iltorb doc for details):
mode
: Default: 0,quality
: Default: 11,lgwin
: Default: 22,lgblock
: Default: 0,enable_dictionary
: Default: true,enable_transforms
: Default: false,greedy_block_split
: Default: false,enable_context_modeling
: Default: false
Heavily copy-pasted from webpack/compression-webpack-plugin by Tobias Koppers.
Licensed under MIT.