我的项目是一个使用uniapp开发的微信小程序。最近在优化包体积,使用vite-bundle-analyzer分析打包产物。发现在common/vendor.js里,uni-cloud占用了比较大的体积。如下图 项目本身没有使用云开发,查看node_modules的依赖关系,uni-app,uni-components对uni-cloud有依赖。请问社区/官方,是否有方法在微信小程序的打包中优化掉这部分代码?
w***@alibaba-inc.com (作者)
不太清楚项目初始创建时使用的是hbuilder还是cli,目前开发中IDE没有使用hbuilder,通过命令行执行npm run build:mp-weixin,进行编译,uniapp版本号为3.0.0-3090920231225001。
在编译后的小程序产物里是无法直接看到uni-cloud的,图中内容是对编译产物中common/vendor.js进行的依赖分析看到的结果。
我自己的解决方案:
首先,项目业务代码没有使用到uni-cloud进行开发,没有使用云函数,数据库,存储。
对package-lock.json分析,项目中对uni-cloud有依赖的modules有@dcloudio/uniapp,@dcloudio/uni-components。查阅网上信息,github的一个issue里提到过在打包构建时去除uni-cloud,并成功(https://github.com/dcloudio/uni-app/issues/4150)。但是在我的项目里并没有babel相关的配置文件。
issue中提到组件会引用uni-cloud,对使用到的uni-ui组件逐一进行检查,发现使用到的uni-data-picker 级联选择器组件支持uniCloud云端数据。替换此组件,进行编译。编译后小程序功能正常,vendor.js体积缩小100K。
2024-02-04 14:26