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
}
相似问题