在你标记为重复之前,我已经搜索了类似的问题,没有一个能帮到我。
目前这是我所尝试的:
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,因为它显示的是兼容版本,而不是确切版本。
2条答案
按热度按时间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"
)随时安装最新版本。f5emj3cl2#
npm outdated
列出了所有可以用当前版本号、想要的版本号和最新版本号更新的软件包。要将所有软件包更新为最新版本,请执行以下操作:
其简单地调用具有每个过时包的最新版本的NPM安装。
强烈建议检查对
packages.json
文件所做的更改,以确保所有更改都符合预期。