npm 如何将package.json更新为每个软件包的最新版本?

1bqhqjot  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(710)

在你标记为重复之前,我已经搜索了类似的问题,没有一个能帮到我。
目前这是我所尝试的:
1.删除package-lock.json文件。
1.删除节点模块。
1.运行npm update
1.运行npm install
这样我就可以在node_modules中安装最新(次要)版本的软件包,并更新package-lock.json文件,但是package.json文件没有更新。
例如,我的moment是package.json,表示为"moment":"^2.27.0"。运行上述步骤后,package-lock.json将更新为"moment":{"版本":"2.29.1",...}但package.json仍将是"时刻":"^2.27.0".
正确的方法是什么?手动运行npm install moment会将package.json更新为"moment":"^2.29.1",但如果我必须为每个依赖项运行npm安装,这是非常荒谬的?

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

5lwkijsr1#

npm install不会更新package.json。它包含关于依赖项和兼容版本的列表。
"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")随时安装最新版本。

f5emj3cl

f5emj3cl2#

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

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

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

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

其简单地调用具有每个过时包的最新版本的NPM安装。
强烈建议检查对packages.json文件所做的更改,以确保所有更改都符合预期。

相关问题