【问题标题】:How to update package.json to latest version of each package?如何将 package.json 更新为每个包的最新版本?
【发布时间】:2021-03-13 03:44:48
【问题描述】:

在您将其标记为重复之前,我已经搜索了类似的问题,但没有一个对我有帮助。

目前这是我尝试过的:

  1. 删除 package-lock.json 文件。
  2. 删除 node_modules。
  3. 运行npm update
  4. 运行npm install

这将始终允许我在 node_modules 中安装最新(次要)版本的包,并更新 package-lock.json 文件。但是,package.json 文件没有更新。

例如,我的时刻是 package.json 被声明为“时刻”:“^2.27.0”。运行上述步骤后,package-lock.json 将更新为 “片刻”: { “版本”:“2.29.1”, ...} 但是 package.json 仍然是 "moment": "^2.27.0"。

这样做的正确方法是什么?运行 npm install moment 手动将 package.json 更新为 "moment": "^2.29.1" 但如果我必须为每个依赖项运行 npm install 就很荒谬?

编辑 感谢选择的答案,我意识到我实际上不需要更新我的 package.json,因为它显示的是兼容版本,而不是确切的版本。

【问题讨论】:

标签: node.js npm node-modules npm-install npm-update


【解决方案1】:

package.json 不会被npm install 更新。其中包含有关依赖项和兼容版本列表。

"moment": "^2.27.0" 的意思是allowed moment version: 2.27.0 <= version < 3.0.0,而不是allowed moment version = 2.27.0。因此,当您运行npm install 时,npm 将安装the latest version of major version 2(在您的情况下为2.29.1),但该命令不会更新package.json。因为它不包含installed version,所以它包含compatible version

但是,npm install moment 命令执行install the latest version of moment,所以package.json 更新了最新版本,因为"^2.27.0" 低于"^2.29.1"

无论如何,如果你想更新你的 package.json,你可以使用npm-check-updates(又名ncu)。 See this answer。如果不想运行ncu,可以随时使用"latest"(例如:"moment": "latest")安装最新版本。

【讨论】:

  • 感谢您非常清楚的解释!
  • ncu 是否更新到最新的次要或主要版本?我不想升级到下一个主要版本,因为它可能会破坏事情
  • @Samson:是的,ncu 可以。如果您想使用最新版本的主要版本 2,请使用 "moment": "<3"
【解决方案2】:

npm outdated 列出了所有可以使用当前、想要和最新版本号更新的软件包。

  • current 是当前安装的版本
  • 想要的是最后一次次要版本更新
  • latest 是最新的主要版本更新

要将所有软件包更新到最新版本,只需执行以下操作:

npm outdated | awk 'NR>1 {print $1"@"$4}' | xargs npm install

它只是使用每个过时软件包的最新版本调用 npm install。

强烈建议检查对您的 packages.json 文件所做的更改,以确保所有更改都符合预期。

【讨论】:

  • 辛苦了!
猜你喜欢
  • 2020-10-20
  • 2021-09-30
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
相关资源
最近更新 更多