【问题标题】:What is wrong with this npm semver?这个 npm semver 有什么问题?
【发布时间】:2019-01-25 06:19:11
【问题描述】:

我想在我的 npm 包的 package.json 中添加以下依赖项:

"redux-saga": "^1.0.0-beta.0 || ^0.16.0"`.

所以当我将我的这个包安装在已经有的不同项目中时

"redux-saga": "^1.0.0-beta.1

我希望 npm/yarn 仅在项目的 node_modules 内安装 1.0.0-beta.1。但是,它会在我的包中传递安装0.16.0

所以我检查了semver calculator 并得到了redux-saga 包的奇怪结果:

  • ^1.0.0-beta.0 || ^0.16.0 只允许 0.16.0 - 这是意料之外的
  • ^1.0.0-beta.0 || ^0.15.0 允许预期

    0.15.0 0.15.1 0.15.2
    0.15.3 0.15.4 0.15.5
    0.15.6 1.0.0-beta.0 1.0.0-beta.1
    

我在文档中找不到任何解释。我的问题是 - 如果它不是错误,那么为什么 ^1.0.0-beta.0 || ^0.16.0 不允许 1.0.0-beta.1

【问题讨论】:

  • 这对我来说绝对是错误的。
  • 很奇怪,包容性比较似乎被破坏了? <=1.0.0-beta.0 也不包含 beta.0

标签: javascript node.js npm yarnpkg semantic-versioning


【解决方案1】:

我的问题已在 npm 社区 forums 上得到解答。

0.16.0 被安装,因为它被标记为 latest,并且 npm 优先考虑 latest 标记。该算法可以在npm-pick-manifest包中找到。

我最终使用yarn resolutions 来解决版本冲突

【讨论】:

  • 感谢您跟进此事。有没有办法在您的查询中否定latest 标记?
  • 最终在一个使用该库的项目中使用yarn resolutions
  • 您的答案中指向yarn resolutions 的链接可能对遇到同样问题的人有用。
猜你喜欢
  • 2018-02-10
  • 2012-05-26
  • 2021-08-20
  • 2015-09-23
  • 2021-02-27
  • 2012-03-10
  • 2010-11-01
  • 2011-08-26
  • 2020-04-16
相关资源
最近更新 更多