我的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
没有效果,这就是我问的原因。
答案 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
时,您可以:
npm update clean-webpack-plugin
参数(如果--save-dev
部分列在devDependencies
中,则适用。package.json
参数(适用于--save
部分dependencies
中列出的)。 根据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"
。