Files
msh-system/msh_single_uniapp/documents/微信主包体积优化.md

60 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 微信小程序主包体积优化说明
## 错误说明
- **报错**`main package source size 2542KB exceed max limit 2048KB`
- **含义**:主包代码体积 2542KB超过微信规定的 2MB2048KB上限无法上传。
## 主包与分包
- **主包**`pages.json``pages` 数组中的页面及其**直接间接依赖**(组件、公共 JS、static 等)都会打进主包。
- **分包**`subPackages` 下的页面单独打成一个或多个分包,不占主包体积;用户进入分包页时才下载对应分包。
- **限制**:主包 ≤ 2MB单个分包 ≤ 2MB总包 ≤ 20MB。
## 已做优化(本次)
### 1. 商品分类改为分包(约可减少主包 100KB+
- **原状**`pages/goods_cate/goods_cate` 在主包中且带多个子组件optimization、fresh、contracted、default_cate体积较大。
- **调整**:在 `pages.json` 中新增分包 `goods_cate`,将 `pages/goods_cate/goods_cate` 移入该分包。
- **结果**:跳转路径仍为 `/pages/goods_cate/goods_cate`,无需改业务代码;该页及其独有组件不再占用主包。
### 2. 关闭生产环境 SourceMap
-`vue.config.js` 中设置 `productionSourceMap: false`,减小构建产物体积。
### 3. 主包体积分析脚本
- **位置**`scripts/analyze-mp-main.js`
- **用法**:先对微信小程序做**发行构建**,再在项目根目录执行:
```bash
node scripts/analyze-mp-main.js
```
- **作用**:根据构建后的 `app.json` 识别分包,只统计主包文件,输出主包总大小及主包内大文件列表,便于后续优化。
## 若主包仍超 2MB 可继续做的优化
1. **静态资源**
- `static/` 下图片(如 tabBar 图标、大图)压缩或改用 CDN仅保留必要的小图在主包。
- 非 tabBar 必需的大图可放 CDN页面内用网络地址引用。
2. **公共 JScommon/vendor.js**
- 主包页面尽量少引大库(如富文本、加解密、大 UI 库);只在分包页或按需引入。
- 已启用 `lazyCodeLoading: "requiredComponents"`manifest.json注意主包首屏用到的组件不要拖入过重依赖。
3. **主包页面与组件**
- 主包仅保留:启动页 + tabBar 页(如 tool_main/index、tool_main/community、index、user 等)及订单车等高频页。
- 非 tab 且非首屏必需的页面,尽量放入 `subPackages`。
- 首页用到的 `homeIndex` 等组件较多时,可考虑按需异步组件或拆分首屏与二屏逻辑,减少首包体积。
4. **构建**
- 确认发行时已压缩manifest 中微信小程序 `minified: true`)。
- 生产环境已去掉 console当前 vue.config.js 已配置 drop_console
## 查看文件列表与依赖
- **主包文件列表与体积**:运行 `node scripts/analyze-mp-main.js` 查看。
- **代码依赖**:在微信开发者工具中上传代码后,在「详情 → 本地设置」可勾选「上传时代码依赖分析」,上传时会给出依赖与体积提示;也可在「代码依赖分析」面板查看各包包含的页面与文件。
重新发行并上传前,请先**重新发行构建微信小程序**,再执行 `node scripts/analyze-mp-main.js` 确认主包已低于 2048KB。分析脚本会优先使用构建产物中的 `app.json`,并参考源码 `pages.json` 中的分包配置以兼容未重新构建时的估算。