我从另一个项目中复制了package.json,现在想把所有的依赖关系提升到它们的最新版本,因为这是一个新的项目,我不介意在出现问题时修复它。
有什么最简单的方法可以做到这一点?
我现在知道的最好的方法是运行npm info express version
,然后手动更新每个软件包.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"
}
}
更新5/1/19。六年过去了,我仍然在维护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
[编辑] 如果你有现代版本的`npm',一个稍微不那么麻烦(避免了全局安装)的方法是。
$ npx npm-check-updates -u
$ npm install