const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); const path = require('path'); const webpack = require('webpack') const CompressionPlugin = require('compression-webpack-plugin') const zlib = require('zlib') module.exports = { devServer:{ proxy: { '/api':{ target:'http://192.168.10.54:9100/v1', changOrigin:true, pathRewrite:{ '^/api':'' } } } }, configureWebpack: { optimization: { minimizer: [ new CssMinimizerPlugin(), ], splitChunks: { chunks: 'all', cacheGroups: { vendor: { test: /[\\/]node_modules[\\/](element-ui|v-viewer)[\\/]/, name: 'vendors', chunks: 'all', priority: 10, // 优先级设置,确保优先打包这些库 enforce: true // 忽略默认的最大初始请求和大小限制 } } } } }, configureWebpack: { resolve: { alias: { '@': path.resolve(__dirname, './src'), '@i': path.resolve(__dirname, './src/assets'), } }, plugins: [ new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), // 下面两项配置才是 compression-webpack-plugin 压缩配置 // 压缩成 .gz 文件 new CompressionPlugin({ filename: '[path][base].gz', algorithm: 'gzip', test: /\.js$|\.css$|\.html$/, threshold: 10240, minRatio: 0.8 }), // 压缩成 .br 文件,如果 zlib 报错无法解决,可以注释这段使用代码,一般本地没问题,需要注意线上服务器会可能发生找不到 zlib 的情况。 new CompressionPlugin({ filename: '[path][base].br', algorithm: 'brotliCompress', test: /\.(js|css|html|svg)$/, compressionOptions: { params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 11 } }, threshold: 10240, minRatio: 0.8 }) ] } }