如何将package.json更新到每个包的最新版本?

问题描述 投票:0回答:3

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

目前这是我尝试过的:

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

这总是允许我在 node_modules 中安装最新(次要)版本的软件包,并更新 package-lock.json 文件。但是,package.json 文件不会更新。

比如我的moment是package.json,表述为“moment”:“^2.27.0”。运行上述步骤后,package-lock.json 将更新为 “片刻”: { “版本”:“2.29.1”, ...} 但package.json仍然是“时刻”:“^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
3个回答
18
投票

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

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

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

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

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

强烈建议检查对

packages.json
文件所做的更改,以确保所有更改均符合预期。


17
投票

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
)。 请参阅此答案。如果您不想运行
ncu
,您可以随时使用
"latest"
(示例:
"moment": "latest"
)安装最新版本。


0
投票
npx npm-check-updates -u
npm install
© www.soinside.com 2019 - 2024. All rights reserved.