如何解决uni-app编译后vendor.js文件过大问题:--minimize与分包优化
一、uni-app编译后vendor.js文件过大
采用uni-app开发的微信小程序,发布时工具提示vendor.js过大,已经跳过es6向es5转换。查看后发现编译后代码中common/vendor.js已超过500k,所以需要体积控制。
有以下 2 种需要注意:
(1)HBuilderX创建的项目:勾选运行 –> 运行到小程序模拟器 –> 运行时是否压缩代码
(2)使用cli创建的项目,可以在 pacakge.json中 添加参数 –minimize,示例:“dev:mp-weixin”: “cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize”
项目是用的 cli 创建的项目,之前的构建命令没有加上 --minimize,我加上了之后,再打包,亲测构建物显著减少 50% 以上,从 1.7M 降到了 900k,然后就可以成功上传微信了。
这个文档上有描述:https://uniapp.dcloud.net.cn/collocation/vue-config.html
二、小程序分包后vendor还是过大
使用分包之后会发现遇到了一个奇怪的问题,子包的组件和 js 文件会被打包到主包的vendor.js文件中,这就导致了vendor.js过大引起主包超过2M。
打开 manifest.json —> 源码视图 —> mp-weixin节点下,添加以下代码
"optimization": {
"subPackages": true
}
会发现分包的 js 文件将不会再打包到主包的vendor.js中了。
"mp-weixin" : {
"appid" : "***",
"setting" : {
"urlCheck": true,
"es6": false,
"minified": true,
"bigPackageSizeSupport": true
},"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
}
},
"requiredPrivateInfos": [
"getLocation"
],
"usingComponents": true,
"optimization": {
"subPackages": true
}
},
我加了上述几个配置,然后从 900多k降到 600 多k了,亲测有效。
可以看看这个文档:https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin