这篇文章主要介绍了Vue中webpack常规打包优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>分析打包文件强>
要优化,先分析。我们先要知道到底是哪里拖慢我们的打包速度呢?
<>强打包后生成文件分析强>
可以利用<代码> webpack-bundle-analyzer> 代码插件来分析我们打包后生成的文件
安装
<代码> npm我webpack-bundle-analyzer - d 代码>
使用
修改<代码> webpack.prod.conf。js代码>文件
const BundleAnalyzerPlugin =,需要(& # 39;webpack-bundle-analyzer& # 39;) .BundleAnalyzerPlugin//,构建完成后,浏览器会自动打开localhost: 8080 webpackConfig.plugins.push ( ,new BundleAnalyzerPlugin ({ 8080年,analyzerPort:大敌; generateStatsFile才能:假 ,}) )
通过图片可以看到打包后文件的具体信息
打包进度条显示,可以查看到打包进度百分比
<代码> simple-progress-webpack-plugin> 代码可以显示打包百分比
安装
npm 小姐:simple-progress-webpack-plugin - d
使用
修改<代码> webpack.prod.conf。js代码>文件
const SimpleProgressWebpackPlugin =,需要(,& # 39;simple-progress-webpack-plugin& # 39;,) … ,插件:[ new 才能;SimpleProgressWebpackPlugin () ,) …
效果如下:
,
<强>资源与依赖包的控制强>
通过上面进度可以看的到,打包过程中,卡顿在压缩的地方过长,当项目越来越臃肿的时候,我们要需要对项目静态资源以及依赖包进行整理,
图片过大的可以压缩,这里推荐一个还不错的压缩链接
- <李>
项目中没有使用的依赖可以删除,可以按需引用的依赖,按需引用
李> <李>项目里面使用ElementUI和Echarts都是全部引用挂在Vue。原型上,现都改为按需引用。
李><>强减少文件搜索范围强>
设置<代码>的决心。别名> 代码字段,避免打包时如果使用相对路径访问或着进口文件时会层层去查找解析文件
解决:,{ ,别名:{ & # 39;才能@ # 39;:,解决(& # 39;src # 39;) ,} }
<>强合理配置扩展扩展名强>
<代码>的决心。扩展> 代码能够自动解析确定的扩展,但是如果扩展扩展名过多,会导致解析过程过多,所以我们要合理配置扩展名,不要过多配置扩展名,项目引用多的文件,扩展名放在前面,我司项目中多的是vue, js文件,可以只引用这两种。
解决:,{ ,扩展:[& # 39;.vue& # 39;,, & # 39; . js # 39;】 }
装载机预处理文件增加包括匹配特定条件
预处理各种文件时指定匹配目录后,webpack解析文件时就不会循环查找其他目录,加快解析速度。
<强> happypack多线程执行强>
webpack执行预处理文件时单线程的,我们可以使用happypack来多线程处理文件。
安装
<代码> npm我happypack - d 代码>
使用
修改<代码> webpack.base。js代码>文件
const happyThreadPool =, HappyPack.ThreadPool({,大小:os.cpus () .length }); 模块:{ ,规则:[ {才能 ,,,测试:/\ . js/美元, ,,装载机:& # 39;happypack/装载机? id=巴贝尔# 39;,,//,原始装载机替换成“happypack/加载程序” ,,,包括:[解决(& # 39;src # 39;)) ,,} ,) }, 插件:, ,new HappyPack ({//才能,id标识,需要处理的加载程序 ,,id: & # 39;巴别塔# 39;//才能,装载机配置和原始配置一样 加载器才能:, ,,{ ,,,装载机:,& # 39;babel-loader& # 39; ,,,选择:,{ ,,,,预设:,(& # 39;es2015& # 39;), ,,,,cacheDirectory:真实 ,,,} ,,} ,,, threadPool才能:happyThreadPool ,}) )
<强> babel-plugin-dynamic-import-node异步加载强>
<代码> babel-plugin-dynamic-import-node> 代码插件是使进口()替换成需要编译
安装
<代码> npm我babel-plugin-dynamic-import-node - d