VUE移动端项目打包优化整理

992 阅读2分钟

版本:vue2.0+ 构建工具 vue-cli 打包工具webpack

1、项目构建完成,首次打包后发现打包过程很慢,查看生成的文件中有一个map文件,其功能主要是用于测试,取消生成map文件,找到config/index.js,箭头所指的地方修改为false即可


2、打包后首屏加载速度慢,加载的资源中vendor.js过大,是因为引用的第三方库过多导致,可以把其中vue vuex vue-router 以及axios分离出来采用cdn加载,在index.html中引入


然后找到build/webpack.base.conf.js,在module.exports中添加以下代码


然后还需查看router中各组件的加载方式是否是按需加载,统一改为以下方式


再次打包后,会发现生成了很多1.xxx.js, 2.xxx.js等,然后 vendor文件也比最初小了很多

3、时间久了之后,项目需求增多,导致项目体积变大,这时可以考虑开启GZIP压缩,找到config/index.js中,修改以下配置


然后在build/webpack.prod.conf.js中找到以下代码修改


然后再次打包,可能会报错TypeError: Cannot read property 'emit' of undefined

这时候需要先卸载之前的compression-webpack-plugin

安装1.12版本的compression-webpack-plugin

卸载命令:npm uninstall --save-dev compression-webpack-plugin

安装1.12命令:npm install --save-dev compression-webpack-plugin@1.1.2

再次运行后打包正常

4、打包后只会生成一个app.css,如果体积过大,并且各组件多使用了scoped样式,则在build/webpack.prod.conf.js中可配置,禁止合并到打包后的app.css,找到allChunks,修改为false,如下:


5、最后打包时,webpack会默认将10K以下的图片转化为base64,如果项目中的图片过多(base64过多,也会导致文件过大,考虑到首屏速度),可以考虑修改以下的数值(build/webpack.case.conf.js),单位为b,然后在合适的地方采用懒加载的方式加载图片