
随着项目越来越大,打包后的体积很大,打包时间也很长,部署一次基本上要等十分钟左右。那么如何来优化打包体积和提高打包速度呢?一起来看看吧~
优化前打包体积分析
优化前个模块体积:
通过脚本命令:npm run analyze



可以看到总的parsed打包体积为 27.92MB, gizped 后也有 8.07MB。 再看每个chunk,可以发现有很多公共的模块出现在多个chunk里面,找到了问题所在。
配置优化
现在我们通过webpackPlugin 里的config.merge,把那些公共的依赖单独打包到一起即可。比如:antdesigns框架里的antv、antd、ant-design;还有react、lodash、moment、postcss等。
plugin.ts 文件
// config/plugin.ts
console.log('Running...')
const webpackPlugin = (config: any) => {
config.merge({
optimization: {
minimize: true,
splitChunks: {
chunks: 'async',
minSize: 30000,
minChunks: 1,
automaticNameDelimiter: '.',
cacheGroups: {
lfpantdesigns: {
name: 'antdesigns',
chunks: 'all',
test: /[\\/]node_modules[\\/](@antv|antd|@ant-design)/,
priority: 10,
},
lfpvendors: {
name: 'vendors',
chunks: 'all',
test: /[\\/]node_modules[\\/](lodash|moment|react|dva|postcss|mapbox-gl)/,
priority: 10,
},
// // 最基础的
// 'async-commons': {
// // 其余异步加载包
// name: 'async-commons',
// chunks: 'async',
// minChunks: 2,
// priority: 2,
// },
lfpcommons: {
name: 'commons',
// 其余同步加载包
chunks: 'all',
minChunks: 2,
priority: 1,
// 这里需要注意下,webpack5会有问题, 需加上这个 enforce: true,
// refer: https://github.com/webpack-contrib/mini-css-extract-plugin/issues/257#issuecomment-432594711
enforce: true,
},
},
},
},
});
};
export default webpackPlugin
config.ts文件
主要是在defineConfig里配置一下chunks,代码如下,因为development编译打包方式和build不同,我们先不考虑development,只针对build。
// config/config.ts
import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings';
// import proxy from './proxy';
// const QcCOSPlugin = require('webpack-cos-plugin')
// const { UMI_ENV } = process.env;
import webpackPlugin from './plugin';
const auth = '@/layouts/SecurityLayout';
export default defineConfig({
// history: { type: 'hash' },
// 打包
publicPath: '/',
nodeModulesTransform: {
type: 'none',
},
define: {
'process.env.API_HOST': 'https://...........',
'process.env.serverDomain': 'https://...........',
'process.env.NEW_MD_HOST': `https://...............`,
},
chunks:
process.env.NODE_ENV === 'development'
? undefined
: ['antdesigns', 'vendors', 'commons', 'umi'],
chainWebpack: process.env.NODE_ENV === 'development' ? undefined : webpackPlugin,
重新进行打包分析
脚本命令:npm run analyze



可以看到总的parsed打包体积为 6.06MB是原来27.92MB的21.7%, gizped 后也有 1.73MB是原来8.07MB的21.4%,都缩小到原来的1/5左右。
下一步Jekins试一下实际的打包速度比原来快多少
原先是10分钟左右,现在6分钟多效果还是比较明显的。

几天后的效果,网络稳定的情况下都在5分钟左右。比之前的10分钟打包时间缩短了一半,Nice !!!









![[附源码]计算机毕业设计网约车智能接单规划小程序Springboot程序](https://img-blog.csdnimg.cn/129ab65f65d6488386676dcc5fcc1211.png)

![[附源码]JAVA毕业设计快递物流管理(系统+LW)](https://img-blog.csdnimg.cn/3fedf60393ab4d0fafce9b9f0c260e1d.png)

![[附源码]JAVA毕业设计-旅游产品销售管理-演示录像2020(系统+LW)](https://img-blog.csdnimg.cn/7536a106c9254a1c9f8b225a4f632f36.png)


![[附源码]Python计算机毕业设计Django南通大学福利发放管理系统](https://img-blog.csdnimg.cn/e84c66efeac3491a851dbaf7f0997f8f.png)



