semver即语义化版本号规范,分为X.Y.Z
- 主版本号X: 做了不兼容的 API 修改(进行不向下兼容的修改)
- 次版本号Y: 做了向下兼容的功能性增加(API 保持向下兼容的新增及修改)
- 修订号Z: 做了向下兼容的问题修正(修复问题但不影响 API)
不过也不能完全以版本号为准,lib的作者很有可能并不完全按照规范实现了semver版本比较
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
compareVersion('1.11.0', '1.9.9') // 1