本文为针对微信小程序发布过程当中提示的"如下文件体积超过500KB,已经跳过压缩以及ES6转ES5处理,如在该文件有使用到ES6特性,请使用其它工具转换成ES5或压缩,不然可能会在低版本设备上运行有风险:. static/js/vendorjs"
html
使用mpvue小程序开发打包发布上传时,会出现如下的报错: vue
依据错误提示,打开工程dist目录下/static/js/vendor.js,能够发现这是一个公共包,若是在多个页面或者模块使用到有相关的代码,那么该代码会被Webpack识别为公共代码,公共代码都会被抽离到这里来,从保留的注释,咱们大概能知道哪些内容是公共部份。 node
安装依赖webpack
build
目录的
webpack.dev.conf.js
配置文件中添加分析配置,关键代码以下:
Stat
按钮
回到webpack打包配置部份,找到公共代码抽离部份,能够发现CommonChunkPlugin
(因该工程使用的是mpvue相对较旧的以前版本,对应的webpack使用的是CommonChunkPlugin)
CommonsChunkPlugin主要是用来提取第三方库和公共模块,避免首屏加载的bundle文件或者按需加载的bundle文件体积过大,从而致使加载时间过长
这里抽取的是第三方公共包部份。 git
注:webpack4以前使用的是webpack.optimize.CommonsChunkPlugin,以后则是使用config.optimization.splitChunk来进行公共代码抽离github
经过分析工程,以本工程为例,能够发如今分析报告中占据大块面积的包模块主要集中在划红线部份: web
上图所示的内容将会被统一打包入Vendor.js,在不改变业务逻辑,例如删除无用引用等状况下,须要对Vendor.js打包内容进一步拆分。
方法就是:建多一个CommonsChunkPlugin对Vendor.js里边的内容,依据匹配列表进行二次拆分。 json
上一步骤解决了webpack配置问题,会生成多一个叫commons.js的公共包,但还需解决另外一个问题,打包文件对该文件的引用。 文件引用的关键代码在node_modules/mpvue-loader/lib/mp-compiler/templates.js
咱们须要对该文件进行改造:小程序
创建引用改造文件check-vendor.js
微信小程序
打包时先执行覆盖文件,再执行打包命令
配置script入口
经过翻阅其它资料,还有其它方案,好比:
小程序分包
但因考虑到工程业务尽可能不更改,新旧版本兼容等问题,这里采用了自行修改webpack打包机制方案,尽可能作到对业务逻辑代码影响最小。
还有一种方案,就是须要分析业务逻辑代码中有些包是否能够只导入须要的部份,例如i18,依据业务判断是否须要那么多的语言包之类,等等,例如如下介绍的方法:
Webpack优化技巧,构建效率提高50%
经过以上的一系列步骤优化,最终对好比下:
经过以上分析和解决步骤,考虑到工程是否适合升级新版本mpvue,对现有业务逻辑影响有多大等评估,最终咱们选择了不动业务逻辑,改造webpack的方式进行。若是风险不太大,建议可考虑小程序分包方案。
最简示例DEMO已上传到Github: mp-compress 有须要的朋友欢迎参考。