# compression-webpack-plugin 打包时启用 gzip 压缩

打包时使用插件后,会在打包出的资源处额外增加同一文件的 *.gz 格式。

将资源放到服务器,并且服务器配置支持 gzip 后,客户端请求资源的 Request Headers 中若有 Accept-Encoding: gzip, deflate 则会请求 gzip 文件,服务端的 Response Headers 中则会有 Content-Encoding: gzip

如果客户端和服务端任意一方不支持 gzip,则会请求正常的 html/css/js 文件。

# 安装

npm install compression-webpack-plugin --save-dev
1

# 配置中使用插件

// webpack.config.js

const CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
  plugins: [
    new CompressionPlugin(),
  ],
};
1
2
3
4
5
6
7
8
9

# 在 vue-cli 项目中使用

// vue.config.js

const CompressionWebpackPlugin = require('compression-webpack-plugin')
const isProd = process.env.NODE_ENV === 'production'

module.exports = {
  configureWebpack: config => {
    if (isProd) {
      // 启用 gzip 压缩插件
      config.plugins.push(new CompressionWebpackPlugin({
        test: /\.js$|\.html$|\.css$/u,
        threshold: 4096, // 超过 4kb 压缩
      }))
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16