我从另一个项目中复制了 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
事情已经发生了一些变化,因为这些答案最初是写的。
npm outdated
+ npm update
+ npm shrinkwrap
npm-check-updates
包 + npm shrinkwrap
一定要收缩你的 deps,否则你可能会结束一个死的项目。我前几天拿出了一个项目而且它不会运行,因为我的 deps 已经过时 / 更新 / 乱七八糟。如果我收缩包装,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 -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,所有安装都将使用完全相同的版本。
这是一种从开发过渡(所有更新,一直)到生产(没有人接触任何东西)的方法。