最近工作项目编译太卡,由于模块太多,前端项目启动起码要6分钟,作为一个前端着实不能容忍,于是开启了优化之旅,仅仅只是对开发环境做了下优化。
首先和网上提供一样,分析一下编译的时间,看看哪个部分花的时间最多,使用插件SpeesMeasureWebpacPlugin,跑下来启动时间在6~7分钟,看了下大部分的时间都在加载loader的时候耗时最长,然后主要优化两个方向,一个是多线程编译,一个是添加缓存。
多线程编译采用了thread-loader,在Vue.confit.js中配置,但是配置下来,感觉速度提升并不明显,确实thread-loader也工作了,4个进程同时编译,速度没降多少。
项目webpack版本是4,缓存需要使用插件,我选择了hardSourceWebpackPlugin,在 configureWebpack配置好以后,第一次编译的时间非常的长,因为要编写新的缓存(write new cache),在第二次启动,速度一下子就降到了半分钟内,这个确实一下子优化了不少,然而在保存编译时,惊喜来了,他报错了,不能保存编译,我傻眼了,报错具体内容:
Can't read property 'call' of undefined
然后开始了漫漫网上搜索的过程,有的说是版本问题,有的说是可以配置hardSourceWebpackPlugin的子插件,说得最多的就是webpack5,在配置中加Cache属性,然而我是4版本,最后统统都没派上用场!
我也陷入了误区,一直搞来搞去,最后发现了一个帖子,hardSourceWebpackPlugin不能和speedMeasureWebpackPlugin同时使用,我去,搞了半天是这样,于是我去除了测速的功能,就好了,一切就好了,速度也快了很多,这个也算踩坑了