getSemverVersion方法关于版本号排序问题

来源:4-9 npm全局更新功能开发

liugezhou

2020-12-24 23:36:15

# 具体遇到的问题

在尝试版本号排序的时候,发现将版本号顺序打乱,并不会进行排序 


# 课程代码如下

function getSemverVersion(baseVersion,versions){

return versions

.filter(version =>semver.satisfies(version, `^${baseVersion}`))

.sort((a,b) => semver.gt(b,a))

}

# 举例

如果 baseVersion = 1.0.0

   versions =['2.1.2', '1.1.1', '1.0.3', '3.1.2',  '1.0.8']


执行上面代码后出现的结果为:

[ '1.1.1', '1.0.3', '1.0.8' ]



错误一:2.1.2 与3.1.2 两个版本过滤掉了,经过代码分析,以上代码semver.satisfies(version, `^${baseVersion}`,应该改为

semver.satisfies(version, `> ${baseVersion}`


 错误二:版本无论如何打乱都不会进行排序,这里的sort没有任何作用,尝试了几下仍然未找到解决办法



写回答

1回答

扬_灵

2020-12-25

同学你好,你说的第一个问题已经和sam老师沟通过了,稍后会进行修复,关于第二个问题可以你可以参考一下下面的函数,对版本数组进行处理返回最后的版本,

function SemverSort(versionArray,baseVersion){
let lastVersion = baseVersion
versionArray.map(value => {
if(semver.gt(value,lastVersion)){
lastVersion = value
}
})
return lastVersion
}


1
hiugezhou
hp>看到sam老师的修复了:

 function getSemverVersions(baseVersion, versions) {

return versions

.filter(version => semver.satisfies(version, `>${baseVersion}`))

.sort((a, b) => semver.gt(b, a) ? 1 : -1);

}
h021-01-05
共1条回复

2024版 Web前端架构师

2024版 ,前端高手课!全局架构思维/系统培养大厂P7技术专家/中小厂前端Leader

1108 学习 · 2254 问题

查看课程