Sam*_*son 4 node.js npm node-modules npm-install npm-update
在您将其标记为重复之前,我已经搜索了类似的问题,但没有一个对我有帮助。
目前这是我尝试过的:
npm update
npm install
这将始终允许我在 node_modules 中安装最新(次要)版本的软件包,并更新 package-lock.json 文件。但是,package.json 文件不会更新。
例如,我的时刻是 package.json 表示为“时刻”:“^2.27.0”。运行上述步骤后,package-lock.json 将更新为 "moment": { "version": "2.29.1", ...} 但 package.json 仍将是 "moment": "^2.27.0"。
这样做的正确方法是什么?npm install moment
手动运行将 package.json 更新为 "moment": "^2.29.1" 但如果我必须为每个依赖项运行 npm install 就很荒谬了?
编辑 感谢选择的答案,我意识到我实际上不需要更新我的 package.json,因为它显示了兼容版本,而不是确切版本。
use*_*671 20
npm outdated
列出所有可以使用当前版本号、所需版本号和最新版本号进行更新的软件包。
要将所有软件包更新到最新版本,只需执行以下操作:
npm outdated | awk 'NR>1 {print $1"@"$4}' | xargs npm install
Run Code Online (Sandbox Code Playgroud)
它只是使用每个过时软件包的最新版本调用 npm install 。
强烈建议检查对packages.json
文件所做的更改,以确保所有更改均符合预期。
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
命令 do install the latest version of moment
,所以 package.json
更新了最新版本,因为 "^2.27.0"
低于 "^2.29.1"
.
无论如何,如果你想更新你的 package.json,你可以使用 npm-check-updates
(又名ncu
)。 看到这个答案。如果您不想运行ncu
,您可以随时使用 "latest"
(Example: "moment": "latest"
) 安装最新版本。