我从另一个项目中复制了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 5和节点8,请尝试以下命令

npm更新--保存

其他回答

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

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

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

向上!

基于npm过时,updtr安装最新版本并为每个依赖项运行npm测试。如果测试成功,updtr会将新的版本号保存到package.json中。但是,如果测试失败,则updtr将回滚其更改。

https://github.com/peerigon/updtr

这在npm 1.3.15中起作用。

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

用于更新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更新--保存