小程序打包解决主包过大问题

在我们使用 uniapp 去开发微信小程序时,由于小程序主包规定最大不能超过 2MB,但是我们开发过程中下载的一些依赖和组件、静态文件,默认都会打包在主包里,这就导致主包会超过 2MB,就无法上传。可以通过以下方法进行解决:

  • 静态文件采用链接形式引入
  • 使用分包
  • 打开上传代码时的代码压缩功能
  • 启用依赖分离功能

一、静态文件采用链接形式引入

我们可以将一些静态文件,例如图片、视频等,采用链接的形式引入,这样就不会被打包在主包中。
例如:

<image src="URL_ADDRESS <image src="https://www.baidu.com/img/bd_logo1.png" />

二、使用分包

分包是将主包中的一些模块,单独打包成一个子包,这样就可以避免主包过大。因为主包是必须要加载的,所以可以将一些不常用的模块放到子包里面,这样就可以避免主包过大。pages.json 文件中,有一个 subPackages 字段,用于配置子包。
例如:

"subPackages": [
    {
      "root": "subpages/sub", // 子包的根目录
      "pages": [ // 子包的页面列表
        "subpage1", // 子包的页面路径
        "subpage2" // 子包的页面路径
      ]
    }
  ]

我们分包过后,就会导致子包里面组件无法在主包里面使用,需要使用占位组件,这在 uniapp 文档里面是没有的,需要在微信小程序官方文档里面查找。官方文档
列如:
pages.json 相关设置

"pages": [ // 主包的页面列表
    {
      "path": "pages/index/index", // 主包的页面路径
      "style": { // 主包的页面样式
        "navigationBarTitleText": "首页",// 主包的页面标题
        "componentPlaceholder": { // 主包的占位组件
           "subpage1": "subpages/sub/subpage1/subpage1", // 子包的占位组件路径
        }
      }
    }
  ]

index.vue 相关设置

<template>
  <view>
    <componentPlaceholder></componentPlaceholder>
  </view>
</template>
<script setup>
  import subpage1 from "subpages/sub/subpage1/subpage1"; // 子包的组件路径
</script>

三、打开上传代码时的代码压缩功能

在上传代码时,我们可以打开代码压缩功能,这样就可以将一些不需要的代码去掉,这样就可以减少主包的大小。
1、在 HBuilder 上面点击运行——>运行到小程序模拟器——>运行时是否压缩代码。
2、在 HBuilder 上面点击发行——>小程序——>发行——>小程序-微信(仅适用于 uni-app)(W)。

四、启用依赖分离功能

在上传代码时,我们可以启用依赖分离功能,这样就可以将一些不需要的依赖去掉,这样就可以减少主包的大小。

在 manifest.json 文件中,对应的 mp-weixin 字段中,添加以下配置:

"mp-weixin": {
    "optimization" : {
         "subpackages" : true
    }
    //其他配置
}
Avatar photo

By mwm

2 thoughts on “解决uniapp生成小程序主包过大问题”

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注