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

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


当前回答

如果使用yarn,以下命令会将所有包更新为最新版本:

纱线升级--最新

从他们的文档中:

upgrade-latest命令升级的包与upgrade命令相同,但忽略package.json中指定的版本范围。相反,将使用最新标记指定的版本(可能跨主要版本升级包)。

其他回答

如果您不想安装全局npm检查更新,您只需运行:

node -e "const pk = JSON.parse(require('fs').readFileSync('package.json', 'utf-8'));require('child_process').spawn('npm', ['install', ...Object.keys(Object.assign({},pk.dependencies, pk.devDependencies)).map(a=>a+'@latest')]).stdout.on('data', d=>console.log(d.toString()))"

如果您正在寻找一个不涉及安装npm包的更简单的解决方案,我会检查updatepackagejson.com

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 

备选方案是

"dependencies":{
    "foo" : ">=1.4.5"
}

每次使用npm更新时,它都会自动更新到最新版本。有关更多版本语法,请查看此处:https://www.npmjs.org/doc/misc/semver.html

要将一个依赖项更新到最新版本,而不必手动打开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;)