验证package.json依赖项中的semver版本

时间:2018-10-12 22:12:24

标签: node.js regex npm semantic-versioning

在验证是否安装了正确版本的依赖项时,我遇到了这样的问题:

package with name csvtojson is not satisfied. Installed version: 0.4.5 desired version: github:Keyang/node-csvtojson#16ba2237e0bd96d6e3773e4c4d6e36c70efa620e

我正在尝试使用semver软件包来验证所需的依赖版本:

const semver = require('semver');
const satisfies = semver.satisfies(installedVersion, desiredVersion);

在package.json中,我们可能会看到以下内容:

"csvtojson": "^1.12.0"

"csvtojson":"github:Keyang/node-csvtojson#16ba2237e0bd96d6e3773e4c4d6e36c70efa620e"

我要做的是确定已安装的依赖项是否满足所需依赖项的版本范围。

如果所需版本不是伪造的,我愿意跳过它,但是对此我没有很好的测试,任何人都知道如何跳过似乎不是伪造的所需版本? / p>

也许使用像这样的正则表达式:

/.*[0-9]{1,5}\.[0-9]{1,5}\.[0-9]{1,5}/

1 个答案:

答案 0 :(得分:0)

此RegExp可以验证所有情况:

^(\d|[1-9]\d*)\.(\d|[1-9]\d*)\.(\d|[1-9]\d*)(-(0|[1-9A-Za-z-][0-9A-Za-z-]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(\.(0|[1-9A-Za-z-][0-9A-Za-z-]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*)?(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$

来源:https://brunorb.com/untangling-semver/