[英]Npm versioning - how does this edge case work?
我试图弄清npm版本的工作原理,因为我陷入了两个无效的软件包中。 引用我的另一个问题 。 我需要的模块,串行端口,使这些软件包无效,“可读流”和“ string_decoder”。 Serialport已下载此版本:
readable-stream@1.0.27-1
串行端口依赖性是
"readable-stream": "~1.0.2"
可读流可用版本为:
....
'1.0.26',
'1.0.27-1',
'1.0.31',
....
这就解释了为什么选择1.0.27-1。 由于波浪号和〜1.0.2,这意味着在每个版本中必须存在这三个数字。 Ref Jakob Mattsson的简单文章
可读流下载
string_decoder@0.10.25-1
可读流再次取决于
"string_decoder": "~0.10.x"
和string_decoders可用的版本是
....
'0.10.24',
'0.10.25-1',
'0.10.25',
'0.10.31',
'0.11.10-1'
....
该版本如何下载? 再次引用该文章 ,波浪号表示版本号必须为0.10,x是否存在?
为什么不选择string_decoder@0.10.31?
我相信我的问题, 问题是要prereleases,这个额外的破折号被称为相关。 我试图收集事实,似乎可以更新依赖项。
我在github上收到了answere, 发出了answer ,以为我会和其他可能会问的人分享:
semver范围检查是从语义上而不是从词汇上完成的,因此1.0.31应该与npm @ 2匹配:
%semver -r'〜1.0.2'1.0.26 1.0.27-1 1.0.31 1.0.26 1.0.31我怀疑您看到的行为是由于软件包tarball中包含的bundledDependency引起的。
有关更详细的答案,请参见节点应用程序由于预发布而无法运行,以及发生这种情况的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.