我从另一个项目中复制了package.json,现在想将所有依赖项都升级到最新版本,因为这是一个新项目,如果出现问题,我不介意修复。

最简单的方法是什么?

我知道的最好的方法是运行npm info express版本,然后手动更新package.json中的每个依赖项。一定有更好的办法。

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "dependencies": {
    "express": "^3.0.3", // how do I get these bumped to latest?
    "mongodb": "^1.2.5",
    "underscore": "^1.4.2"
  }
}

有关纱线特定的解决方案,请参阅本堆栈溢出线程。


当前回答

我为最近版本的NPM找到了另一个解决方案。我想做的是用明确的最新版本号替换所有“*”依赖项。所讨论的方法都不适合我。

我所做的:

将所有“*”替换为“^0.0.0”运行npm检查更新-u

package.json中的所有内容现在都更新到最新版本。

其他回答

这里有一个基本的正则表达式来匹配语义版本号,因此您可以用星号快速替换它们。

语义版本Regex

([>|<|=|~|^|\s])*?(\d+\.)?(\d+\.)?(\*|\d+)

如何使用

选择要在JSON文件中替换的包版本。

输入上面的正则表达式,并验证它是否与正确的文本匹配。

用星号替换所有匹配项。

运行npm更新--保存

我真的很喜欢npm升级的工作方式。这是一个简单的命令行实用程序,它可以遍历所有依赖项,让您查看当前版本与最新版本的比较,并根据需要进行更新。

以下是在项目根目录中运行npm升级后发生的情况的屏幕截图(在package.json文件旁边):

对于每个依赖项,您可以选择升级、忽略、查看更改日志或完成该过程。到目前为止,这对我来说效果很好。

要清楚,这是一个第三方软件包,需要在命令生效之前安装。它不附带npm本身:

npm install -g npm-upgrade

然后从具有package.json文件的项目的根目录:

npm-upgrade

如果您正在使用Github,请使用Greenkeeper。https://greenkeeper.io/

这是一个Github集成,非常容易设置。安装后,它会自动在您指定的存储库中创建拉取请求(如果需要,也可以全部创建),并使您的代码始终保持最新,而无需强制您手动执行任何操作。然后,PR应该在CI服务上触发构建,根据成功或失败的检查,您可以继续找出触发问题的原因,或者CI通过时,只需合并PR。

在底部,您可以看到第一个构建最初失败,在提交(“升级到节点v6.9”)后测试通过,因此我可以最终合并PR。还附带了很多表情符号。

另一种选择是https://dependencyci.com/然而,我没有集中测试它。乍一看,Greenkeeper在一般IMO中看起来更好,并具有更好的整合性。

我在上面的最佳答案中发现的唯一警告是,它将模块更新到最新版本。这意味着它可能会更新为不稳定的alpha版本。

我会使用npm检查更新实用程序。我的团队使用了这个工具,它通过安装稳定的更新有效地工作。

如Etienne所述:安装并运行以下程序:

$ npm install -g npm-check-updates
$ npm-check-updates -u
$ npm install 

npm check updates是一个实用程序,它使用所有依赖项的最新版本

看见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