原作于: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. html input选择文件后将文件转为地址

    function getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { // basic ur ...

  2. 10分钟教你使用Picgo+GitHub+ jsDelivr搭建CDN加速免费图床

    前言 经常写Markdown或者博客的同学,肯定都要用到图床.图床是什么呢?其实相当于一个存储图片的网站,类似百度云这样,不过上传图片到图床后可以直接通过外链进行访问. 比如把本地一张a.jpg上传到 ...

  3. CF1511G-Chips on a Board【倍增】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1511G 题目大意 给出\(n*m\)的棋盘上每一行有一个棋子,双方轮流操作可以把一个棋子向左移动若干步(不能不 ...

  4. DeepDB:Learn From Data,not from Queries!

    ABSTRACT DBMS典型学习方法的弊端:手机数据集的成本过高;工作方向或数据库发生改变时,必须重新收集数据.--------------解决:提出了一种新的数据驱动方式,直接支持工作负载和数据库 ...

  5. iOS 15 无法弹出授权弹框之解决方案---Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0

    2021年9月30日下午:我正愉快的期盼着即将到来的国庆假期,时不时刷新下appstoreconnect的网址,28号就提上去的包,今天还在审核中....由于这个版本刚升级的xcode系统和新出的iO ...

  6. Java程序的种类

    Java程序的种类 Application:Java应用程序,是可以由Java解释器直接运行的程序. Applet:即Java小应用程序,是可随网页下载到客户端由浏览器解释执行的Java程序. Ser ...

  7. java 从零开始手写 RPC (03) 如何实现客户端调用服务端?

    说明 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 写完了客户端和服务端,那么如何实现客户端和服务端的 ...

  8. Dapr + .NET Core实战(十一)单机Dapr集群负载均衡

    如何单机部署Dapr集群 第十篇讲过了K8S集群下如何使用Dapr运行程序,但是很多人一直在问如何单机下进行Dapr的负载,这节课我们来聊聊如何单机进行Dapr的负载. 首先要说的是单机下,通过 da ...

  9. 服务注册中心之Eureka使用

    一.Eureka基础 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCl ...

  10. node-gyp项目命名BUG

    当我们编写node原生模块的时候,免不了对node-gyp项目进行命名,在node-gyp进行build的时候,会跟binding.gyp配置文件中的target_name生成对应的原生模块.但是,如 ...