这个 npm semver 有啥问题?
Posted
技术标签:
【中文标题】这个 npm semver 有啥问题?【英文标题】: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
【参考方案1】:
我的问题已在 npm 社区 forums 上得到解答。
0.16.0
被安装,因为它被标记为 latest
,并且 npm 优先考虑 latest
标记。该算法可以在npm-pick-manifest包中找到。
我最终使用yarn resolutions 来解决版本冲突
【讨论】:
感谢您跟进此事。有没有办法在您的查询中否定latest
标记?
最终在一个使用该库的项目中使用yarn resolutions
您的答案中指向yarn resolutions
的链接可能对遇到同样问题的人有用。以上是关于这个 npm semver 有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
由于以下错误,无法运行任何 npm 命令 - 错误:找不到模块“semver”
npm - Semver 版本控制 - 使用插入符号“^”更新包