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

标签 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 没有效果,这就是我问的原因。

最佳答案

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

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

假设您要使用 ^0.1.18 发布您的项目在 package.json 中指定然后任何后续用户运行 npm install实际上会得到版本 0.1.19无论如何 (警告:因为 clean-webpack-plugin 的版本历史在撰写本文时目前位于 npm 存储库中)

所以,简而言之,我很确定版本 0.1.19已安装在您的系统上,它只是没有更改 package.json 中指定的版本.实际上没有必要这样做,semver 的规则和插入符号的使用仍然受到尊重。

So the caret ^ symbol should mean, that you could possibly update the package to version 0.9.9 if available, right?

"^0.1.18" 中的插入符号对 npm 说我将接受对最新 MINOR 的任何更新版本,但我不会接受重大更新。 IE。 ^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参数 (如果它在 devDependenciespackage.json 部分中列出则适用)
  2. 或者,附加 --save参数 (如果它在 dependenciespackage.json 部分中列出则适用)

附加--save-dev--save适用于 npm update clean-webpack-plugin会更新 package.json 中的条目.这在 Recording Updates with --save 中有进一步解释。 npm 文档的一部分。

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


注意

正在运行 npm update clean-webpack-plugin加上额外的 --save--save-dev如果npm ls clean-webpack-plugin,参数将不会有任何影响报告:

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

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

关于npm - Semver 版本控制 - 使用插入符号 "^"更新包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49270776/

相关文章:

javascript - 无法使用 husky : . husky/pre-commit: line 4: npx: command not found 提交

semantic-versioning - GitVersion – 对同一项目的多个程序集进行选择性版本控制

azure-devops - 从 csproj 获取 Azure DevOps 中 Nuget 包步骤中的版本号

angular - 没有 npm 更新 Angular 10 的 git 新分支

angular - ng更新和npm更新有什么区别?

node.js - 如何将多个参数传递给 npm start

node.js - 什么是 cnpm?如何使用它?

npm - grunt js 安装包

python - 无法在 WinPython : "ModuleNotFoundError: No module named ' semver'"上安装 spaCy

Angular 10.2 构建 : Localized bundle generation failed: Cannot read property 'value' of undefined