简体   繁体   English

在 package.json 依赖值中验证 semver 版本

[英]validate semver version in package.json dependency value

I am getting problems like this when validating that the right version of a dependency is installed:在验证是否安装了正确版本的依赖项时,我遇到了这样的问题:

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

I am trying to use the semver package to validate a desired dependency version:我正在尝试使用 semver 包来验证所需的依赖版本:

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

in package.json, we might see this:在 package.json 中,我们可能会看到:

"csvtojson": "^1.12.0"

or或者

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

what I want to do is determine if an installed dependency meets the version range of the desired dependency.我想要做的是确定已安装的依赖项是否满足所需依赖项的版本范围。

If the desired version is not semverish, I am willing to skip it, but I don't have a good test for that, anyone have a good idea how to skip desired versions that don't appear to be semverish?如果所需的版本不是 semverish,我愿意跳过它,但我没有很好的测试,任何人都知道如何跳过似乎不是 semverish 的所需版本?

Maybe use a regex like this:也许使用这样的正则表达式:

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

? ?

This RegExp here is validating all scenarios:这里的 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-]+)*)?$

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM