W3cubDocs

/webpack

CompressionWebpackPlugin

Prepare compressed versions of assets to serve them with Content-Encoding

Install

npm i -D compression-webpack-plugin

Usage

webpack.config.js

const CompressionPlugin = require("compression-webpack-plugin")

module.exports = {
  plugins: [
    new CompressionPlugin(...options)
  ]
}

Options

Name Type Default Description
{RegExp|Array<RegExp>}
.
All assets matching this {RegExp|Array<RegExp>} are processed
{RegExp|Array<RegExp>}
undefined
Files to include
{RegExp|Array<RegExp>}
undefined
Files to exclude
{Boolean|String}
false
Enable file caching
{String}
[path].gz[query]
The target asset name. [file] is replaced with the original asset. [path] is replaced with the path of the original asset and [query] with the query
{Function}
false
A {Function} (asset) => asset which receives the asset name (after processing asset option) and returns the new asset name
{String|Function}
gzip
Can be (buffer, cb) => cb(buffer) or if a {String} is used the algorithm is taken from zlib
{Number}
0
Only assets bigger than this size are processed. In bytes.
{Number}
0.8
Only assets that compress better than this ratio are processed
{Boolean}
false
Whether to delete the original assets or not

##

webpack.config.js

[
  new CompressionPlugin({
    test: /\.js/
  })
]

include

webpack.config.js

[
  new CompressionPlugin({
    include: /\/includes/
  })
]

exclude

webpack.config.js

[
  new CompressionPlugin({
    exclude: /\/excludes/
  })
]

cache

webpack.config.js

[
  new CompressionPlugin({
    cache: true
  })
]

asset

webpack.config.js

[
  new CompressionPlugin({
    asset: '[path].gz[query]'
  })
]

filename

webpack.config.js

[
  new CompressionPlugin({
    filename (asset) {
      asset = 'rename'
      return asset
    }
  })
]

algorithm

webpack.config.js

[
  new CompressionPlugin({
    algorithm: 'gzip'
  })
]

threshold

webpack.config.js

[
  new CompressionPlugin({
    threshold: 0
  })
]

minRatio

webpack.config.js

[
  new CompressionPlugin({
    minRatio: 0.8
  })
]

deleteOriginalAssets

webpack.config.js

[
  new CompressionPlugin({
    deleteOriginalAssets: true
  })
]

© JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
https://webpack.js.org/plugins/compression-webpack-plugin