前端vue2项目中,多人开发,从一段时间开始发现打包变得特别慢,每次线上更新也至少要10几20分钟,正常项目线上更新一般也就1、2分钟,新需求开发拉新分支本地运行也要至少5、6分钟才能运行的起来。查找问题 为了找出打包慢的原因,我们首先得找到到底是哪些文件太大还是耗时太久?这中间用到了两个插件:webpackbundleanalyzer:分析打包过后的包的大小speedmeasurewebpackplugin:分析各个插件和loader打包用时 1。安装webpackbundleanalyzerNPMnpminstallsavedevwebpackbundleanalyzerYarnyarnaddDwebpackbundleanalyzer 2。安装speedmeasurewebpackpluginNPMnpminstallsavedevspeedmeasurewebpackpluginYarnyarnaddDspeedmeasurewebpackplugin 3。配置webpack这两个插件vue。config。jsconstBundleAnalyzerPluginrequire(webpackbundleanalyzer)。BundleAnalyzerPluginconstSpeedMeasurePluginrequire(speedmeasurewebpackplugin)module。exports{configureWebpack:config{config。plugins。push(newBundleAnalyzerPlugin())config。plugins。push(newSpeedMeasurePlugin())}}插件分析结果打包总时间:5分30。61秒打包文件总大小:24。03MB打包时间比较长的插件和loader:vuevueloaderv15、minicssextractplugin、cssloader、postcssloader、stylusloader、cacheloader打包最大的单个文件:依赖了echarts的页面,大小为3。79MB,还有xlsx和html2canvas也比较大 猜测大饱满可能是echarts造成的,项目里是直接全部导入的echarts库,其实项目中只用到了一个折线图,先改成按需导入按需导入echarts打包分析结果 echarts官方文档 按需引入封装的echarts。js,项目中只用到了一个折线图,所以只需引入LineChart:引入echarts核心模块和Canvas渲染器importasechartsfromechartscoreimport{CanvasRenderer}fromechartsrenderers引入折线图图表import{LineChart}fromechartscharts引入图表里用到的组件import{LegendComponent,GridComponent,}fromechartscomponents注册必须的组件echarts。use(〔LegendComponent,GridComponent,CanvasRenderer,LineChart〕)exportdefaultechartstemplatetemplate打包总时间:5分52。31秒打包文件总大小:22。07MB打包后的echarts的只有1点多MB 打包的文件大小确实有变小,但是打包时间缺变得更长了。 注意上面的分析都是基于npmrundev打的开发包。这一下下的,给我搞得都不废了,最终打包慢的问题还在寻找中。。。