/** * semver 数值比较(轻量实现,无第三方依赖) * 支持 v 前缀与 prerelease 后缀(仅比较主版本号主体) */ export default function compare(a, b) { const pa = parse(a) const pb = parse(b) for (let i = 0; i < 3; i++) { if (pa[i] !== pb[i]) return pa[i] - pb[i] } return 0 } function parse(v) { const main = String(v).replace(/^v/, '').split(/[-+]/)[0] const parts = main.split('.') return [ parseInt(parts[0], 10) || 0, parseInt(parts[1], 10) || 0, parseInt(parts[2], 10) || 0, ] }