我从另一个项目中复制了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"
  }
}

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


当前回答

在@kozlovd答案上展开,我构建了一个bash脚本,通过两个步骤更新任何npm脚本:

如果您收到错误,请手动计算npm包的数量。npm列表|wc-l这里用包的数量替换NUM_PKGS,如果在上一个命令中出现“UNMET DEPENDENCY”错误,则将$2替换为$4。

NUM_PKGS=9999; npm list --no-unicode | awk -v NUM_PKGS=$NUM_PKGS '{\
    if (NR>1 && NR <NUM_PKGS) {\
        pver=A[split($2,A,"@")];\
        print substr($2,0,length($2)-length(pver))"latest";\
    }\
}' | xargs -r npm i

说明:命令Nº2首先获取包名,并仅在出现“UNMET DEPENDENCY”错误的情况下对其行进行操作,然后awk迭代每个包名,它获取版本值并用“最新”替换,最后所有替换了版本的包都由xargs收集,xargs在“npm i”之后将它们连接起来,最终用最新版本安装所有包。此步骤可以使用没有设置版本的包或现有项目更新新项目

其他回答

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

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

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

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

无需额外软件包的解决方案

将每个依赖项的版本更改为*:

"dependencies": {
    "react": "*",
    "react-google-maps": "*"
  }

然后运行npm update--save。

您的一些软件包已更新,但有些没有更新?

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "*"
  }

这是一个棘手的部分,这意味着你的本地版本“react”比最新版本低。在本例中,npm下载并更新了“react”包。然而,您的本地版本“反应谷歌地图”与最新版本相同。

如果您仍然希望“更新”未更改*,则必须从node_modules文件夹中删除这些模块。

例如删除node_modules/react谷歌地图。

最后再次运行npm更新--save。

"dependencies": {
    "react": "^15.0.1",
    "react-google-maps": "^4.10.1"
  }

如果您想更新开发依赖项,请不要忘记运行npm update--save dev。

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 

上述命令不安全,因为在切换版本时可能会损坏模块。相反,我建议如下

使用npm shrinkwrap命令将当前节点模块的实际版本设置为package.json。如果每个依赖项没有破坏您的测试,请使用https://github.com/bahmutov/next-update命令行工具

npm install -g next-update
// from your package
next-update

这在npm 1.3.15中起作用。

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