项目背景
- vue 2.6
- vue-class-component 7.2
- vuex 3.4
- vuex-class 3.4
- vue-router 3.2
- element-ui 2.14
- vue-property-decorator 8.4
- vue-cli 4
- webpack 4
今天抽空做一下 webpack 的打包优化,然后网上看看各种方式,一种是多进程打包
HappyPack,项目使用TypeScript尝试了下,由于vue-cli配置有限,尝试几次失败后,选择简单的动态库的形式。
按照教程慢慢来
先写个 dll 的配置
webpack.dll.config.js
1 | // 标准的配置,没有什么异常 |
然后 添加 npm scripts: "dll": "webpack --config ./webpack.dll.config.js"`
再修改 vue.config.js
这里需要安装一些依赖
npm i -d webpack-cli add-asset-html-webpack-plugin
随带添加了个 代码包分析插件 webpack-bundle-analyzer, 打包速度分析插件 speed-measure-webpack-plugin
1 | // vue.config.js 部分内容 |
然后打包发布

pa 哦豁,报错了,然后看到是在 vue.**.dll.js 报的错。
改下配置,将 vue 全家桶拆分
1 | entry: { |

还是有问题,不过这次定位到了在 vue-property-decorator 里面,
修改配置,去掉 vue-property-decorator
1 | // 修改配置,去掉vue-property-decorator |

shit 再去掉 vue-class-component
1 | // 修改配置,再去掉vue-class-component |

fuck 再去
1 | // 修改配置,再去掉vue-class-component |
nice 一切(看越来)正常

OMG, vue 怎么还在
vue 明明是已经抽取 dll 了,为什么打包的时候还有。。。
等我排查排查
此处省略 1W+字 😩😩😩
最后的配置
1 | entry: { |

perfect
你以为这就结束了?no no no
看一下打包的 dll
element.dll.js

瞎搞,你element怎么打vue也打包了
再看看vue.dll.jd

正常的,我自己打包自己没毛病吧
1 | 继续修改配置, |
把element-ui 和vue一起打包,但是还是会打包多个,这里就不贴图了
继续翻翻翻翻 全局搜索的时候发现了这个

然后再看看 vue.config.js
1 | runtimeCompiler: true |
原来在这,改成false 就行了
OK 一切正常,这次是真 OK 了
附上最后的配置
1 | // 切记vue.config.js 配置 |
总结
一切的一切全来源于runtimeCompiler: true
成果
这是优化前的编译时间

这是优化后的编译时间

卧槽卧槽卧槽。。提速 95%...