如何更新 package.json 到每个包的最新版本?
How to update package.json to latest version of each package?
在您将其标记为重复之前,我搜索了类似的问题,其中 none 个对我有所帮助。
目前这是我尝试过的:
- 删除包-lock.json文件。
- 删除node_modules.
- 运行
npm update
- 运行
npm install
这将始终允许我在 node_modules 中安装最新(次要)版本的软件包,并更新 package-lock.json 文件。但是,package.json 文件不会更新。
比如我的时刻是package.json表示为“时刻”:“^2.27.0”。在 运行ning 上述步骤之后,package-lock.json 将更新为
“片刻”: {
“版本”:“2.29.1”,
...}
但是 package.json 仍然是 "moment": "^2.27.0".
正确的做法是什么? 运行ning npm install moment
手动将 package.json 更新为 "moment": "^2.29.1" 但是如果我必须 运行 npm install 为每个依赖项安装它是非常荒谬的?
编辑
由于选择了答案,我意识到我实际上不需要更新我的 package.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
命令执行install the latest version of moment
,所以package.json
更新了最新版本,因为"^2.27.0"
低于"^2.29.1"
。
无论如何,如果您想更新您的package.json,您可以使用npm-check-updates
(a.k.a。ncu
)。 See this answer。如果您不想 运行ning ncu
,您可以随时使用 "latest"
(示例:"moment": "latest"
)安装最新版本。
npm outdated
列出所有可以使用当前、想要和最新版本号更新的软件包。
- current 是当前安装的版本
- 想要的是最后一次小版本更新
- latest是最新的大版本更新
要将所有软件包更新到最新版本,只需执行以下操作:
npm outdated | awk 'NR>1 {print "@"}' | xargs npm install
它只是用每个过时包的最新版本调用 npm install。
强烈建议检查对 packages.json
文件所做的更改,以确保所有更改都符合预期。
在您将其标记为重复之前,我搜索了类似的问题,其中 none 个对我有所帮助。
目前这是我尝试过的:
- 删除包-lock.json文件。
- 删除node_modules.
- 运行
npm update
- 运行
npm install
这将始终允许我在 node_modules 中安装最新(次要)版本的软件包,并更新 package-lock.json 文件。但是,package.json 文件不会更新。
比如我的时刻是package.json表示为“时刻”:“^2.27.0”。在 运行ning 上述步骤之后,package-lock.json 将更新为 “片刻”: { “版本”:“2.29.1”, ...} 但是 package.json 仍然是 "moment": "^2.27.0".
正确的做法是什么? 运行ning npm install moment
手动将 package.json 更新为 "moment": "^2.29.1" 但是如果我必须 运行 npm install 为每个依赖项安装它是非常荒谬的?
编辑 由于选择了答案,我意识到我实际上不需要更新我的 package.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
命令执行install the latest version of moment
,所以package.json
更新了最新版本,因为"^2.27.0"
低于"^2.29.1"
。
无论如何,如果您想更新您的package.json,您可以使用npm-check-updates
(a.k.a。ncu
)。 See this answer。如果您不想 运行ning ncu
,您可以随时使用 "latest"
(示例:"moment": "latest"
)安装最新版本。
npm outdated
列出所有可以使用当前、想要和最新版本号更新的软件包。
- current 是当前安装的版本
- 想要的是最后一次小版本更新
- latest是最新的大版本更新
要将所有软件包更新到最新版本,只需执行以下操作:
npm outdated | awk 'NR>1 {print "@"}' | xargs npm install
它只是用每个过时包的最新版本调用 npm install。
强烈建议检查对 packages.json
文件所做的更改,以确保所有更改都符合预期。