NPM 插入符号不引入最新的次要版本
Posted
技术标签:
【中文标题】NPM 插入符号不引入最新的次要版本【英文标题】:NPM caret doesn't bring in newest minor version 【发布时间】:2018-09-13 04:37:24 【问题描述】:在我的 package.json 中,我的依赖项之一是... "@packageXXX": "^0.7.0",
当我执行“npm outdated”时,我看到... @packageXXX 当前:0.7.0 想要:0.7.0 最新:0.8.0
当我执行“npm i”时 它不会安装最新的次要版本“0.8.0”
我的理解是插入符号应该更新到最新的次要版本,但事实并非如此。有人可以解释我做错了什么吗?
【问题讨论】:
【参考方案1】:0.x.x 就是这种情况,因为前导零表示包尚未进入“稳定”版本。在您的包达到 1.x.x 之前,您需要手动进行这些更新(并且要小心...您的包还不稳定,这意味着可能会发生重大更改!)。
https://semver.org/
主要版本零 (0.y.z) 用于初始开发。什么都可以 随时改变。公共 API 不应该被认为是稳定的。
【讨论】:
我看到了我依赖“^1.0.1”并且 1.0.2 可用的确切内容,但它只安装 1.0.1...你如何解释?跨度> @Michael 你的包管理员犯了一个错误(或者你是)。如果你不使用 Yarn,我强烈推荐它。【参考方案2】:根据nodejs documentation,包^0.7.0
-> 不会被npm update
更新为0.8.0
^:它只会做不改变最左边的非零数字的更新。如果写^0.13.0,运行npm update时,可以更新到0.13.1、0.13.2等,但不能更新到0.14.0以上。如果写^1.13.0,运行npm update时可以更新到1.13.1、1.14.0等,但不会更新到2.0.0或以上。
【讨论】:
以上是关于NPM 插入符号不引入最新的次要版本的主要内容,如果未能解决你的问题,请参考以下文章
npm - Semver 版本控制 - 使用插入符号“^”更新包
插入符号范围和 package-lock.json:如何使用它们获得最新的非破坏版本?
npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?