如何减小微信小程序代码包大小
原作于:https://captnotes.com/how_to_reduce_package_size_of_weapp
这两天被小程序代码包大小暴涨的问题困扰了挺久。简单说说怎么回事吧,就是之前好端端的微信小程序,最近配合新需求作了些改动,代码包大小突然翻了两倍多,从不到2MB一下子超过5MB,超过了腾讯对小程序代码包大小不得超过2MB的限制,从而没法上传,也就没法真机调试,更不能发布了。
首先想到的是把所有图片资源都上传到文件服务器,腾出本地空间。但图片并不多,还用TinyPNG压缩过,心算都知道不可能超过3MB。果然,即便移除了所有图片,代码包依然还有4MB多。
Google一番,不少人都遇到过这个问题。网上给出的解决办法几乎清一色都是拆分代码包,虽然单个代码包不能超过2MB,但通过拆分,总共不超过20MB就行。不是没想过拆,是感觉没这个必要,之前统计过,代码文件加一起也就1.2MB,所以就没考虑过分包。既然众口一词都是教人如何分包,万一真是包治百病的济世良方呢,试试看,反正不要钱。
具体的分包策略和方式请参考官方文档,这里懒得赘述。
半信半疑地分完包,主包还是超过4MB。要不就是改成云函数,但毕竟不是只写了个Hello World,改动太大,暂不考虑。但是网上找不到别的招儿了,没办法,自己琢磨、另辟蹊径呗。
文本文件不可能那么大,图片又都被我挪走了,那么嫌疑最大就是第三方SDK。我只引用了两个SDK,这次并没增加,只是将其中一个的版本升了级。首先查了一下该SDK的Bug列表,没有相关问题反馈。那会不会是升级之后,老版本没有及时清理,从而也被算进去了呢?因此我用npm uninstall命令卸载了该SDK,并重新构建了NPM,然而效果如同蚍蜉撼树。
直觉告诉我,方向肯定没问题。问题具体出在哪儿呢?我开始打起微信开发者工具的算盘。

有什么办法可以看到代码包里具体的文件大小吗?长话短说,此处省去N千字。“详情”→“基本信息”里的“代码依赖分析”猛地蹦到我的视线里,让我立马想起Android Studio里的Remove Unused Resources——对呀,找找看有没有无效的引用。

分析结果不仅按照方块面积来可视化文件大小,还可以列出哪些文件是没有被依赖的。这就好比泄露的内存,都没人用了,还在那儿占着地方。根据分析结果,从大到小将无依赖的代码文件该删的删、该砍的砍,在不影响小程序正常运行的前提下将主代码包大小降到2MB以下不是什么难事。
如何减小微信小程序代码包大小的更多相关文章
- 小程序代码包压缩 策略&方案
微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐.其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程 ...
- 微信小程序代码片段
微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...
- [RN] React Native代码转换成微信小程序代码的转换引擎工具
React Native代码转换成微信小程序代码的转换引擎工具 https://github.com/areslabs/alita
- 微信小程序代码构成
一.小程序代码 app.json 是当前小程序的全局配置,包括了小程序的所有页面路径.界面表现.网络超时时间.底部tab等. { "pages":[ "pages/ind ...
- 微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg
准备工作: 微信关注需要下载编译包的小程序,然后点进去看一下,微信就会自动下载相应的编译包到手机上了. 获取小程序编译包: 据说root手机可以直接在手机的文件管理中查找wxapkg文件,自己尝试了下 ...
- 微信小程序代码大全 - 小程序开发福利
小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...
- webstorm开发微信小程序代码提醒(webstorm开发工具)
使用了微信提供的开发工具是真心难用,卡顿厉害.中英文切写注释换相当不爽.还没办法多开窗口,相信大家也遇到过这种现象. 下边我们介绍下webstorm来开发微信小程序的一些配置: File---sett ...
- 微信小程序代码开源啦
想学习如何使用mpvue开发微信小程序吗? 想知道微信消息推送如何实现吗? 想知道如何用springboot开发小程序后台吗? 看这里就全都有了.耗时一个月打造的微信小程序:PSN折扣助手前后端所有源 ...
- 史上最全的微信小程序代码大全
--------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...
随机推荐
- Linux系列(28) - 软件包简介
软件包分类 源码包(脚本安装包) 优点 开源,如果有足够的能力,可以修改源代码: 可以自由选择所需的功能: 软件是编译安装,所以更加适合自己的系统,更加稳定.效率更高: 卸载方便: 缺点 安装过程步骤 ...
- CLion远程调试嵌入式开发板程序
CLion远程调试嵌入式开发板程序 目录 CLion远程调试嵌入式开发板程序 1. 目的 2. 前提条件 3. CLion设置 3.1 设置一个Deployment 3.2 上传需要的目录到目标板子 ...
- 『Python』进程同步
1. Lock(互斥锁) 是可用的最低级的同步指令.Lock处于锁定状态时,不被其他的线程拥有. from multiprocessing import Process, Value, Lock de ...
- Hive语法及其进阶(一)
1.Hive完整建表 1 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name( 2 [(col_name data_type [COMMENT col ...
- python-matplotlib学习(1)
1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x=np.linspace(-1,1,50) 5 y=2*x+1 6 plt.pl ...
- 在Anaconda环境下安装Tensorflow
安装Anaconda 下载Anaconda 个人版Individual Edition.如果下载速度慢,可以复制下载链接到迅雷或者在清华大学开源镜像站TUNA中找合适的版本. 注意在安装过程中的&qu ...
- 1. JVM核心类加载器及类加载的全过程
运行环境: 下面说明一下我的运行环境.我是在mac上操作的. 先找到mac的java地址. 从~/.bash_profile中可以看到 java的home目录是: /Library/Java/Java ...
- 模拟一个简单的tomcat
目录 简单处理 每个请求一个线程 模拟tomcat 参考 简单处理 // 客户端和服务器的通信,说到底就是两个数据的传输, // 客户端发送inputStream给服务器,服务器回复 // outpu ...
- jmx_prometheus_javaagent+prometheus+alertmanager+grafana完成容器化java监控告警(二)
一.拓扑图 二.收集数据 2.1前期准备 创建共享目录,即为了各节点都创建该目录,有两个文件,做数据共享 /home/target/prom-jvm-demo 1.下载文件 jmx_prometheu ...
- Serverless:这真的是未来吗?(一)
原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_1/ 作者 | Lee Briggs & Piers Karsen ...