用semver解析版本号

semver是版本规范,也是npm中的一个库。最近有机会使用到这个库,因此在这里记录一下。

我的需求很简单,就是在一堆版本号中,取某一个范围内的最大版本号。这里面给出两个条件,一堆版本号和一个范围;需要的结果是最大版本号。

正巧,这正是semver功能的一个子集。

semver中有

  • 类,Range

  • 函数,maxSatisfying

因此,就有了下面的代码

const Range = require('semver/classes/range')
const maxSatisfying = require('semver/ranges/max-satisfying')
const getVersions = require('./getVersions')

const targtVersion = maxSatisfying(getVersions(), new Range('^3.0.0'))

在给定的versions中,取3.0版本中的最大版本号。

意外发现

当然这个意外发现完全源于我对semver的陌生。

“^3.0.0”就是版本号的选择范围。这个范围不会包含3.0.0-0这种形式的版本号。而用npm version preminor/prepatch/prerelease生成预览版并发布,^3.0.0或者~3.0.0这种选择范围会将预览版的版本号过滤掉,这一点确实很有用啊。

semver安装

npm install --save semver

你可能感兴趣的:(Javascript,npm,前端,node.js,semver)