Prepare compressed versions of assets to serve them with Content-Encoding
npm i -D compression-webpack-plugin
webpack.config.js
const CompressionPlugin = require("compression-webpack-plugin")
module.exports = {
  plugins: [
    new CompressionPlugin(...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
  })
]
  
 Joshua Wiens  |  
  
 Juho Vepsäläinen  |  
 Michael Ciniawsky  |  
 Alexander Krasnoyarov  |  
    © JS Foundation and other contributors
Licensed under the Creative Commons Attribution License 4.0.
    https://webpack.js.org/plugins/compression-webpack-plugin