我从另一个项目中复制了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检查更新是现在实现这一点的唯一方法。

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过时即可。它将列出所有已安装的具有较新版本的依赖项。

有关特定于纱线的解决方案,请参阅此StackOverflow答案。

其他回答

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

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

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

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

如果你想通过一个漂亮的(终端)交互式报告界面使用一种温和的方法,我建议使用npm检查。

它不是一个锤子,给了你更多关于依赖关系更新的知识和控制。

为了让你尝一尝等待的滋味,这里有一张截图(从git页面中截取,用于npm检查):

看来npm检查更新是现在实现这一点的唯一方法。

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过时即可。它将列出所有已安装的具有较新版本的依赖项。

有关特定于纱线的解决方案,请参阅此StackOverflow答案。

这在npm 1.3.15中起作用。

"dependencies": {
  "foo": "latest"
}

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