marketingsystem_temp_h5/build/webpack.prod.js

42 lines
1.7 KiB
JavaScript
Raw Normal View History

2024-08-23 16:01:52 +08:00
const { merge } = require('webpack-merge')
const baseConfig = require('./webpack.base.js')
2024-09-11 16:31:15 +08:00
const CompressionPlugin = require("compression-webpack-plugin");
2024-09-12 11:35:58 +08:00
const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
2024-08-23 16:01:52 +08:00
module.exports = merge(baseConfig, {
mode: 'production', // 生产模式,会开启 tree-shaking 和 压缩代码,以及其他优化
2024-09-03 11:06:13 +08:00
output: {
publicPath: './',
},
2024-09-11 16:31:15 +08:00
plugins: [
2024-09-12 11:35:58 +08:00
// new BundleAnalyzerPlugin(),
2024-09-11 16:31:15 +08:00
// 使用 CompressionPlugin 压缩静态资源
new CompressionPlugin({
algorithm: 'gzip', // 指定压缩算法
test: /\.js(\?.*)?$/i, // 正则匹配需要压缩的文件
threshold: 10240, // 对超过10k的数据进行压缩
minRatio: 0.8, // 压缩比例
deleteOriginalAssets: false, // 是否删除原文件
}),
],
2024-08-23 16:01:52 +08:00
optimization: {
splitChunks: { // 分隔代码
cacheGroups: {
vendors: { // 提取node_modules 代码
test: /node_modules/, // 只匹配 node_modules 里面的模块
name: 'vendors', // 提取文件命名为 vendors.js 后缀和 chunkhash 会自动加
minChunks: 1, // 只要使用一次就提取出来
chunks: 'initial', // 只提取初始化就能获取到的模块,不管异步的
minSize: 0, // 提取代码体积大于0就提取出来
priority: 1, // 提取优先级为1
},
commons: { // 提取页面公共代码
name: 'commons', // 提取文件命名为 commons
minChunks: 2, // 只要使用两次就提取出来
chunks: 'initial', // 只提取初始化就能获取到的模块,不管异步的
minSize: 0, // 提取代码体积大于0就提取出来
}
}
},
},
})