Prepare Brotli or Gzip-compressed versions of assets to serve them different content encodings

Downloads in past


500.5.06 years ago6 years agoMinified + gzip package size for brotli-gzip-webpack-plugin in KB


brotli gzip plugin for webpack
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 ngxbrotli or such.


``` npm install --save-dev brotli-gzip-webpack-plugin ```


``` javascript 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. the style of style.css. [ext] is replaced with the file name extension, e.g. the css of style.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 to 0.
  • minRatio: Only assets that compress better that this ratio are processed. Defaults to 0.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.