@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...

    函数 shouldUploadDistFile

    • 判断 dist 中的文件是否应作为版本产物上传。

      参数

      • relativePath: string

        dist 根目录下的文件路径。判断前先经 normalizeRelativePath 统一斜杠、删除前导 / 并合并连续 /;函数不读取文件系统或文件内容。

      返回 boolean

      以下规范化结果返回 false:空路径、精确等于根 manifest.json、精确 basename 为 .DS_Store 的任意层级路径,以及以大小写不敏感 .map 结尾的路径。其他值返回 true。

      过滤顺序以 normalizeRelativePath(relativePath) 的结果为准:

      • '' 返回 false。
      • 只有精确根路径 manifest.json 返回 false;/manifest.json 规范化后也会命中。 assets/manifest.json 会保留,因为它不是根文件。匹配大小写敏感,所以 Manifest.json 不会作为生成 Manifest 被过滤。
      • 根或任意子目录中精确名为 .DS_Store 的最终 segment 返回 false,匹配大小写敏感; .ds_store、.DS_Store.bak 会保留。
      • 整条规范化路径经 toLowerCase() 后以 .map 结尾即返回 false,因此 .map、 app.js.map、app.js.MAP 都会过滤,而 app.js.map.txt 会保留。

      根 manifest.json 是发布流水线单独读取并上送后台的版本元数据,不作为 CDN 文件上传; 子目录同名文件仍被视为普通业务产物。该 predicate 只做上传集合选择,不验证输入确实是 文件,也不检查扩展名白名单、文件存在性或内容。

      true 不代表路径安全。本函数不会 URL decode,也不会拒绝 node_modules、symlink、绝对 路径、Windows drive prefix、. / ..、空 segment、控制字符、重复路径或超长路径。 build/deploy 必须另外使用 relativePathContainsNodeModulesSegment 拒绝依赖目录;deploy 还需在签名/上传前执行路径规范、唯一性和长度校验。

      build/deploy 会先扫描并完成上述独立边界,再以本函数过滤候选文件。build 对保留文件校验 上传大小预算;deploy 额外执行 artifact 排序/签名与路径长度校验。因此被过滤的根 Manifest、Finder 元数据和 source map 不计入上传文件数或大小;本函数自身不读取 size,也不能替代 validateUploadTotalSize() / validateMiniappUploadSizeBudgets()。

      import { shouldUploadDistFile } from '@heybox/hb-sdk/miniapp-publish';

      shouldUploadDistFile('/manifest.json'); // false,规范化后是根 manifest.json
      shouldUploadDistFile('assets/manifest.json'); // true
      shouldUploadDistFile('assets/.DS_Store'); // false
      shouldUploadDistFile('assets/.ds_store'); // true,.DS_Store 区分大小写
      shouldUploadDistFile('assets/app.js.MAP'); // false,.map 后缀不区分大小写
      shouldUploadDistFile('assets/app.js.map.txt'); // true
      shouldUploadDistFile('node_modules/pkg/index.js'); // true,必须另做 node_modules 检查
      shouldUploadDistFile('assets/../secret.js'); // true,但这不代表路径安全

      0.3.1