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

应该会为您提供与应用程序兼容的最新版本。但不是最新版本。

其他回答

要将一个依赖项更新到最新版本,而不必手动打开package.json并更改它,可以运行

npm install {package-name}@* {save flags?}

i.e.

npm install express@* --save

此流程与工作区兼容,即。

npm --workspace some/package install express@*

作为参考,npm install


注意:某些npm版本可能需要最新标志,即npm安装express@latest


正如用户Vespakoen在被拒绝的编辑中所指出的,也可以通过以下方式一次更新多个包:

npm install --save package-nave@* other-package@* whatever-thing@*

他还提出了一个基于npm过时的外壳的单线。有关代码和说明,请参见编辑。


PS:我也讨厌为这样的事情手动编辑package.json;)

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

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

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

用于更新NPM 3.10.10的package.json的命令:

npm install -g npm-check-updates
ncu -a
npm install

背景:

我使用的是@josh3736的最新命令,但我的package.json没有更新。然后,在运行npm检查更新-u时,我注意到了描述文本:

以下依赖性通过其声明的版本范围来满足,但安装的版本落后。您可以安装最新的版本,而无需使用npm更新来修改包文件。如果如果仍要更新包文件中的依赖项,请运行ncu-a。

阅读npm检查更新的文档,您可以看到不同之处:

https://www.npmjs.com/package/npm-check-updates

-u、 --升级:覆盖包文件-a、 --upgradeAll:甚至包括最新版本满足声明的semver依赖项的依赖项

ncu是npm check updates的别名,如键入npm check update-u时的消息所示:

[INFO]: You can also use ncu as an alias

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

语义版本Regex

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

如何使用

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

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

用星号替换所有匹配项。

运行npm更新--保存

您可以在shell中执行此操作,而不是为一次性用例安装另一个节点模块。。。

npm install $(npm outdated | tail -n +2 | awk '{print $1}' | sed -e 's/$/@latest/g' | tr '\n' ' ')