详解基于详解基于DllPlugin和和DllReferencePlugin的的webpack构建优化构建优化
一个基于vue-cli webpack2模板创建的项目.项目中使用到了vue+vue-router+axios+muse-ui+iview
现在构建一次需要的时间大概是40s左右.真心受不了.虽然在开发过程中,我们不太需要关心构建时间.但是如果在开发hybridApp
时,构建的次数就会增多.
一般我们可以把项目分为三部分.
分类分类 说明说明 变动频率变动频率
vendor_library 核心库 低
vendor 一般项目依赖 中等
code 业务逻辑 高
vendor_library:比如vue,vue-router,axios 这些变动频率极低的文件可以利用 DllPlugin 和 DllReferencePlugin 进行预编译.
vendor,code在开发阶段,每次构建都需要编译.但是一旦完成该次开发任务,应该调整vendor 是否加入vendor_library.
BundleAnalyzerPlugin 的插件使用的插件使用
BundleAnalyzerPlugin 是分析 Webpack 生成的包体组成并且以可视化的方式反馈给开发者的插件。
vue已经默认集成了该插件. 如果你运行 npm run build –report.就能看到当前项目的依赖情况.然后做出相应调整.
优化方向优化方向
按需加载按需加载
muse-ui,iview 都提供了按需加载的方式,按照文档调整即可.
分类分类 耗时耗时 muse-ui iview
before 13256ms 234KB 337KB
after 43211ms 79KB 75KB
先看结果…你没看错,’优化后’,时间竟然变长了….不过这也正常,之前的依赖直接获取的是dist目录的文件,现在需要在src目录下获
取.增加了编译的过程.
但是文件大小的减少还是喜人的.当然,这取决于项目中对模块的使用程度.在我们这个项目中iview只使用了的四个控件.结果上看,
显然还是按需加载比较划算.不过这个不算是时间上的优化,只是因为dll可以解决构建时间问题,使按需加载变的更好用.
DllPlugin 和和 DllReferencePlugin 预编译资源模块预编译资源模块