npm - Semver版本控制 - 使用插入符“^”更新包

时间:2018-03-14 06:08:25

标签: npm semantic-versioning npm-update

我的package.json文件中有一个npm包

 "clean-webpack-plugin": "^0.1.18"

现在当我将鼠标悬停在包裹上时,我可以看到有更新的版本

"clean-webpack-plugin": "^0.1.19"

现在,据我所知,我可以做npm update来更新遵守semver规则的所有软件包或只更新软件包npm update clean-webpack-plugin

因此,插入符^符号应该表示您可以将包更新为版本0.9.9(如果可用),对吗?

npm update没有效果,这就是我问的原因。

1 个答案:

答案 0 :(得分:3)

我非常肯定npm会将clean-webpack-plugin 的应用程序文件从版本0.1.18 更新为版本{{1在您运行:0.1.19之后,如问题中所述。

但是,npm不会更新npm update clean-webpack-plugin中的条目,因为理论上它实际上并不是必需的。为什么?..因为版本package.json"^0.1.18"中指定。即使用插入符package.json符号指定版本。

我们假设您要使用^中指定的^0.1.18发布您的项目,然后任何后续运行package.json的用户实际上都会获得版本npm install (警告:因为0.1.19的版本历史记录在编写本文时目前位于npm存储库中)

因此,简而言之,我确信您的系统上已安装了clean-webpack-plugin版本,但它根本没有更改0.1.19中指定的版本。它实际上没有必要这样做,而且semver的规则和插入符号的使用仍然受到尊重。

  

因此,插入符package.json符号应该表示您可以将包更新为版本^(如果可用),对吗?

0.9.9中的插入符号表示我将接受对最新MINOR版本的任何更新,但我不接受主要更新。即"^0.1.18"表示范围^0.1.18 中的任何更新(也允许该范围内的PATCH更新)

验证是否已更新:

要验证是否实际安装了版本>=0.1.18 <1.0.0,您可以0.1.19到项目目录并运行:

cd

您应该看到以下内容已登录到您的控制台:

npm ls clean-webpack-plugin

但我希望... └── clean-webpack-plugin@0.1.19 在运行package.json之后显示"^0.1.19"

当您最初运行npm update时,您可以:

  1. 附加npm update clean-webpack-plugin参数(如果--save-dev部分列在devDependencies 中,则适用。
  2. 或者,附加package.json参数(适用于--save部分dependencies中列出的)。
  3. 根据package.json添加--save-dev--save,会更新npm update clean-webpack-plugin中的条目。这在npm文档的Recording Updates with --save部分进一步说明。

    通过这样做,您可以将其视为重新指定您接受的更新范围的初始package.json部分。

    注意

    如果>=报告,则使用其他npm update clean-webpack-plugin--save参数运行--save-dev将不会产生任何影响:

    npm ls clean-webpack-plugin

    无需更新,因此我只需在... └── clean-webpack-plugin@0.1.19 中手动指定"^0.1.19"