// 版本号比较 (纯函数, 无浏览器依赖, 方便单测) // // 口径: 把版本号按"非数字"切成数字字段, 逐段比较数值大小, 缺位补 0 // "0.2.0-ota" → [0, 2, 0] // "v1.10.3" → [1, 10, 3] // "0.2" 与 "0.2.0" 视为相等 export function parseVersionFields(v) { return String(v || '') .trim() .split(/[^0-9]+/) .filter((s) => s !== '') .map((s) => Number(s)) } // a > b 返回 1, a < b 返回 -1, 相等返回 0 export function compareVersion(a, b) { const fa = parseVersionFields(a) const fb = parseVersionFields(b) const n = Math.max(fa.length, fb.length) for (let i = 0; i < n; i++) { const x = fa[i] || 0 const y = fb[i] || 0 if (x !== y) return x > y ? 1 : -1 } return 0 }