2

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

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

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

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

现在,据我了解,我可以例如npm update更新所有遵循 semver 规则的软件包或仅更新 package npm update clean-webpack-plugin

所以插入符号应该意味着,如果可用,^您可以将包更新到版本,对吗?0.9.9

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

4

1 回答 1

6

我很确定 npm在您运行后会clean-webpack-plugin 一个版本0.1.18 另一个版本更新应用程序文件:如您的问题中所述。0.1.19npm update clean-webpack-plugin

但是,npm 不会更新您的条目,package.json因为理论上它实际上没有必要这样做。为什么?...因为版本"^0.1.18"package.json. 即版本用插入^符号指定。

假设您要发布您的项目,^0.1.18然后package.json任何后续运行的用户npm install实际上都将获得版本0.1.19警告:clean-webpack-plugin在撰写本文时,当前版本历史记录在 npm 存储库中)

因此,简而言之,我很确定0.1.19您的系统上已经安装了该版本,它根本没有更改package.json. 实际上没有必要这样做,并且仍然遵守 semver 的规则和插入符号的使用。

所以插入符号应该意味着,如果可用,^您可以将包更新到版本,对吗?0.9.9

插入符号"^0.1.18"对 npm 说,我将接受对最新次要版本的任何更新,但我不会接受主要更新。即^0.1.18表示该范围内的任何更新>=0.1.18 <1.0.0 (也允许该范围内的 PATCH 更新)


验证是否已更新:

要验证是否0.1.19实际安装了版本,您可以cd到您的项目目录并运行:

npm ls clean-webpack-plugin

您应该看到以下记录到您的控制台:

...
└── clean-webpack-plugin@0.1.19

但我想在运行后package.json显示:"^0.1.19"npm update

当您最初运行时,npm update clean-webpack-plugin您可以:

  1. 附加--save-dev参数(如果它在您的devDependencies部分中列出,则适用package.json
  2. 或者,附加--save参数(如果它在您的dependencies部分中列出,则适用package.json

附加--save-dev--save酌情附加npm update clean-webpack-plugin将更新package.json. 这在 npm 文档的Recording Updates with--save部分中有进一步的解释。

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


笔记

npm update clean-webpack-plugin使用附加--saveor参数运行--save-dev不会有任何影响,如果npm ls clean-webpack-plugin报告:

...
└── clean-webpack-plugin@0.1.19

没有什么可更新的,所以我只需手动指定"^0.1.19".package.json

于 2018-03-18T14:50:28.787 回答