跳到主要内容

umi性能问题

最近遇到一个性能问题,就是前端打包之后的体积特别庞大,压缩后都20多M,这是不可接受的,然后分析打包的内容,运行

yarn analyze

发现很多包都很大,再具体看包里的内容发现每个包里都包含了一份antd的包代码,那肯定包体积会极度膨胀了,然后就是看文档发现一句坑爹的话:

如果开了 dynamicImport,然后产物特别大,每个出口文件都包含了相同的依赖,比如 antd,可尝试通过 splitChunks 配置调整公共依赖的提取策略。

然后一看配置,确实开启了dynamicImport,在这里我要吐槽下,及时开启了dynamicImport,也不能让每个出口文件包含相同依赖啊,正常来说肯定是打包到主文件里。找到了原因,解决起来也就很简单了,官网上就有一个配置,直接能用:

export default {
dynamicImport: {},
chunks: ['vendors', 'umi'],
chainWebpack: function (config, { webpack }) {
config.merge({
optimization: {
splitChunks: {
chunks: 'all',
minSize: 30000,
minChunks: 3,
automaticNameDelimiter: '.',
cacheGroups: {
vendor: {
name: 'vendors',
test({ resource }) {
return /[\\/]node_modules[\\/]/.test(resource);
},
priority: 10,
},
},
},
}
});
},
}

加上这段配置之后,包大小从20+M直接缩小到了1.7M左右,这算不算数量级上的提升-_-||。

Loading Comments...