待判断的 package.json.version / Manifest 版本字符串;首尾空白会先被
移除,但函数不会把规范化后的字符串返回给调用方。
trim 后满足小程序严格版本规则时返回 true,否则返回 false。对类型声明允许的
字符串输入,该函数只返回布尔值,不抛出校验错误。
接受形式为 canonical SemVer MAJOR.MINOR.PATCH[-PRERELEASE]。trim 后的输入必须与
semver 严格解析得到的 version 完全相同,因此不完整版本(如 1.2)、v / =
前缀、范围表达式、额外段,以及 major/minor/patch 或纯数字 prerelease 标识中的前导零
都返回 false。只有首尾空白会被忽略,内部空白不会被修复。
合法 prerelease(如 1.2.3-alpha.1、0.0.1-rc.0)可以使用。build metadata 即使符合
标准 SemVer(如 1.2.3+build.1)也被小程序发布合同显式禁止。模板占位 core
0.0.0 同样禁止,包括 0.0.0-alpha 等 prerelease;至少应提升 patch/minor/major
之一,例如 0.0.1-alpha.1。
这是无 I/O、无状态修改的 predicate,适合表单即时判断。实际 Vite / hb-sdk build
流程会调用同规则的 package version validator:成功时返回 trim 后版本并写入 Manifest,
失败时抛出带 package.json.version 来源的错误;调用本函数为 true 不能跳过正式构建。
resolveMiniappManifestPlatforms 处理的是 Manifest sdkVersion 对平台声明策略的
SemVer precedence,不是当前小程序的发布 version。不要用本函数替代平台解析,也不要
把项目 version 当作 sdkVersion 传入。
import { isValidVersion } from '@heybox/hb-sdk/miniapp-publish'
isValidVersion(' 1.2.3 ') // true
isValidVersion('1.2.3-alpha.1') // true
isValidVersion('0.0.1-alpha.1') // true
isValidVersion('1.2') // false
isValidVersion('v1.2.3') // false
isValidVersion('1.2.3+build.1') // false
isValidVersion('0.0.0-alpha') // false
判断小程序版本是否符合公开 Manifest 版本规则。