如何将package.json中的每个依赖项更新为最新版本?
我从另一个项目复制了package.json,现在想要将所有依赖关系都打包到最新版本中,因为这是一个全新的项目,我不介意解决它的问题。
最简单的方法是什么?
我现在知道的最好方法是运行npm info express version
然后手动为每个npm info express version
更新package.json。 一定会有更好的办法。
{
"name": "myproject",
"description": "my node project",
"version": "1.0.0",
"engines": {
"node": "0.8.4",
"npm": "1.1.65"
},
"private": true,
"dependencies": {
"express": "~3.0.3", // how do I get these bumped to latest?
"mongodb": "~1.2.5",
"underscore": "~1.4.2",
"rjs": "~2.9.0",
"jade": "~0.27.2",
"async": "~0.1.22"
}
}
我现在是npm-check-updates的协作者,这是一个很好的解决方案。
看起来像npm-check-updates是现在做到这一点的唯一方法。
npm i -g npm-check-updates
ncu -u
npm install
在npm <3.11:
只需将每个依赖项的版本更改为*
,然后运行npm update --save
。 ( 注意:在最近(3.11)版本的npm中被打破)。
之前:
"dependencies": {
"express": "*",
"mongodb": "*",
"underscore": "*",
"rjs": "*",
"jade": "*",
"async": "*"
}
后:
"dependencies": {
"express": "~3.2.0",
"mongodb": "~1.2.14",
"underscore": "~1.4.4",
"rjs": "~2.10.0",
"jade": "~0.29.0",
"async": "~0.2.7"
}
当然,这是更新依赖关系的钝器。 如果 - 如你所说 - 这很好,该项目是空的,没有什么可以打破。
另一方面,如果您正在开发一个更成熟的项目,那么在升级之前,您可能需要验证您的依赖项没有发生重大更改。
要查看哪些模块已过时,只需运行npm outdated
。 它会列出任何已安装的具有较新版本的依赖项。
npm-check-updates
是一个实用工具,可以自动调整package.json和所有依赖关系的最新版本
请参阅https://www.npmjs.org/package/npm-check-updates
$ npm install -g npm-check-updates
$ ncu -u
$ npm install
TLDR; (更新了更新的NPM版本)
由于这些答案是最初编写的,因此情况有所改变。
npm 2+: npm outdated
+ npm update
+ npm shrinkwrap
较早的npm: npm-check-updates
包+ npm shrinkwrap
一定要收缩包装,否则可能会导致死亡项目。 我有一天拿出一个项目,它不会运行,因为我的代价都过时了/更新/一团糟。 如果我收缩包装,npm会安装我所需要的。
细节
对于目前为止很好奇的人来说,这是我推荐的:
使用npm-check-updates
或npm outdated
建议最新版本。
# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.
$ npm update
# OR
# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u
然后做一个干净的安装(没有rm我有一些依赖警告)
$ rm -rf node_modules
$ npm install
最后,使用npm shrinkwrap
将精确版本保存到npm-shrinkwrap.json
npm shrinkwrap
$ rm npm-shrinkwrap.json
$ npm shrinkwrap
现在, npm install
现在将在npm-shrinkwrap.json
使用精确版本
如果你检查npm-shrinkwrap.json
到git中,所有安装将使用完全相同的版本。
这是一种从开发(所有更新,所有时间)转换到生产(没有人接触)的方式。
npm过时了
NPM-检查更新功能
npm收缩包装
上一篇: How do I update each dependency in package.json to the latest version?