原作于: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以下不是什么难事。

如何减小微信小程序代码包大小的更多相关文章

  1. 小程序代码包压缩 策略&方案

    微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐.其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程 ...

  2. 微信小程序代码片段

    微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...

  3. [RN] React Native代码转换成微信小程序代码的转换引擎工具

    React Native代码转换成微信小程序代码的转换引擎工具 https://github.com/areslabs/alita

  4. 微信小程序代码构成

    一.小程序代码 app.json 是当前小程序的全局配置,包括了小程序的所有页面路径.界面表现.网络超时时间.底部tab等. { "pages":[ "pages/ind ...

  5. 微信小程序编译包的获取与解压——在手机中获取小程序编译包wxapkg

    准备工作: 微信关注需要下载编译包的小程序,然后点进去看一下,微信就会自动下载相应的编译包到手机上了. 获取小程序编译包: 据说root手机可以直接在手机的文件管理中查找wxapkg文件,自己尝试了下 ...

  6. 微信小程序代码大全 - 小程序开发福利

    小程序QQ交流群:131894955 小程序开发文档(Wepy) 小程序商城源码下载(weixin-app-shop) 小程序官网源码下载(weixin-app-cms) 微信管家平台JAVA版开源下 ...

  7. webstorm开发微信小程序代码提醒(webstorm开发工具)

    使用了微信提供的开发工具是真心难用,卡顿厉害.中英文切写注释换相当不爽.还没办法多开窗口,相信大家也遇到过这种现象. 下边我们介绍下webstorm来开发微信小程序的一些配置: File---sett ...

  8. 微信小程序代码开源啦

    想学习如何使用mpvue开发微信小程序吗? 想知道微信消息推送如何实现吗? 想知道如何用springboot开发小程序后台吗? 看这里就全都有了.耗时一个月打造的微信小程序:PSN折扣助手前后端所有源 ...

  9. 史上最全的微信小程序代码大全

    --------------------- 本文来自 fenxiangjun 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/fenxiangjun/article/d ...

随机推荐

  1. CentOS8安装ntp实现时间同步

    在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现,像我这种习惯了ntp同步时间的,一时难以去适应chrony. 本文将通过wlnmp提供的源,来安装ntp服务 添加wln ...

  2. DEDE留言板调用导航的方法

    DEDE留言板调用导航的方法 dede里的留言板guestbook.htm用{dede:include filename="../default/head.htm"/}不能自动生成 ...

  3. 华为云计算IE面试笔记-FusionCompute上的虚拟机A和虚拟机B不能正常通信,请描述可能的故障点和排除方法(分析虚拟机A和虚拟机B不通)

    *快速定位故障点:(考到) ARP:同一二层内可以通过ARP -a命令查询到要访问的主机IP(ARP表项中记录了同一二层中的IP和MAC的对应关系),若查询不到,说明二层出现问题(Vlan 间不通)或 ...

  4. javascript 享元模式 flyweight

    * 适应条件 ** 一个程序中使用了大量的相似对象 造成大的内存开销 ** 对象的大多数状态都可以变为外部状态 ** 剥离出对象的外部状态之后, 可以使用相对较少的共享对象取代大量对象 * 上传文件的 ...

  5. git 要求密码的解决方法:【生成gitLab公钥】:以及如何配置GitLab中的SSH key

    参考链接: https://www.cnblogs.com/yjlch1016/p/9692840.html https://blog.csdn.net/u011925641/article/deta ...

  6. [转载]CentOS 下安装LEMP服务(Nginx、MariaDB/MySQL和PHP)

    LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作用.正如其名称所暗示的, LEMP 包是由 Linux.nginx.MariaDB/MySQL 和 P ...

  7. str.strip(chars)

    strip会去除给定字符串的指定字符,指定字符可以是一个或多个,去除从左右分别进行,没有则忽略,如果需要去除某个中间的字符,必须先去除外围的字符 看几个例子,以s为例,故意设置为非对称结构, s = ...

  8. 推荐一款 Python 微服务框架 - Nameko

    1. 前言 大家好,我是安果! 考虑到 Python 性能及效率性,Python Web 端一直不温不火,JAVA 和 Golang 的微服务生态一直很繁荣,也被广泛用于企业级应用开发当中 ​本篇文章 ...

  9. Spring Cloud Gateway 雪崩了,我 TM 人傻了

    本系列是 我TM人傻了 系列第六期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 获取异 ...

  10. centos7有关于防火墙的命令

    查看防火墙状态 firewall-cmd --state 开启防火墙 systemctl start firewalld.service 关闭防火墙 systemctl stop firewalld. ...