要累计的条目。函数按数组顺序读取每项 size,经 Number(...) 转换后仅
累加有限且大于 0 的值;不修改、过滤或排序输入数组,也不读取 relativePath。
可选 byte 上限;默认 104857600 bytes(100 MiB)。自定义上限不会改变
固定错误文案。
总和严格大于上限时返回唯一固定字符串
构建产物总大小超过 100MB,请删除未引用资源或压缩图片后重新 deploy;总和小于或等于
上限时返回 undefined。函数不会因超限抛异常,调用方决定是否把返回文本转成 Error。
计算等价于把每项规范成 Number.isFinite(Number(size)) && Number(size) > 0 ? Number(size) : 0
后求和,不取整、不去重,也不设置单文件上限。因此一个文件可以占满全部预算,多个同路径
条目会重复计数,正小数会按 JavaScript number 原值加入;总和恰等 limitBytes 时通过,
多 1 byte 才返回错误。
在声明的 TypeScript 输入契约内,该函数以返回值报告预算结果,不为非有限/非正 size 抛错。
固定错误文本不包含首个文件、实际总量或自定义上限,即使测试/集成传了其他 limitBytes,
文案仍写 100MB 和 重新 deploy。hb-sdk build 的调用方会把末尾提示改成 重新 build。
该函数只校验一个未分组列表的总量,不读取文件系统,不执行 stat,也不校验路径、安全性、
文件数量、重复项、单文件大小或内容。调用方应先用
shouldUploadDistFile 选择真正
上传的文件,并完成 node_modules、路径规范/唯一性/长度等校验;被提前过滤的 Manifest、
.DS_Store 和 source map 才不会计入总量。
Web 与 Companion 需要独立预算时使用 validateMiniappUploadSizeBudgets():它按
relativePath 的 companions/ 前缀分组,Web 组复用本函数的默认 100 MiB 规则,Companion
组使用独立 500 MiB 上限。直接调用本函数不会识别或分开这些路径。
import { validateUploadTotalSize } from '@heybox/hb-sdk/miniapp-publish';
const atLimit = validateUploadTotalSize(
[
{ relativePath: 'assets/app.js', size: 1_024 },
{ relativePath: 'assets/ignored-negative.js', size: -1 },
{ relativePath: 'assets/ignored-nan.js', size: Number.NaN },
],
{ limitBytes: 1_024 },
)
console.log(atLimit) // undefined,恰等上限
const overLimit = validateUploadTotalSize(
[{ relativePath: 'assets/app.js', size: 1_025 }],
{ limitBytes: 1_024 },
)
if (overLimit) throw new Error(overLimit)
校验一组构建产物的总大小是否超过给定上限。