23 lines
551 B
JavaScript
23 lines
551 B
JavaScript
/**
|
|||
|
|
* 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,
|
||
|
|
]
|
||
|
|
}
|