我从另一个项目中复制了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 1.3.15中起作用。

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

其他回答

向上!

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

https://github.com/peerigon/updtr

使用*作为最新版本的版本,包括不稳定版本使用最新版本作为最新稳定版本的版本定义使用LatestStablePackages使用最新的稳定版本号修改package.json

下面是一个示例:

"dependencies": {
        "express": "latest"  // using the latest STABLE version
    ,   "node-gyp": "latest"    
    ,   "jade": "latest"
    ,   "mongoose": "*" // using the newest version, may involve the unstable releases
    ,   "cookie-parser": "latest"
    ,   "express-session": "latest"
    ,   "body-parser": "latest"
    ,   "nodemailer":"latest"
    ,   "validator": "latest"
    ,   "bcrypt": "latest"
    ,   "formidable": "latest"
    ,   "path": "latest"
    ,   "fs-extra": "latest"
    ,   "moment": "latest"
    ,   "express-device": "latest"
},

在@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”之后将它们连接起来,最终用最新版本安装所有包。此步骤可以使用没有设置版本的包或现有项目更新新项目

安全更新

使用“npm过时”查找过期的依赖项。使用“npm update”执行安全的依赖关系升级。使用“npm install@latest”升级到包的最新主要版本。

中断更新

使用“npx npm check updates-u”。“npm install”将所有依赖项升级到最新的主要版本。

我使用npm检查来实现这一点。

npm i -g npm npm-check
npm-check -ug #to update globals
npm-check -u #to update locals

另一个有用的命令列表,它将在package.json中保留准确的版本号

npm cache clean
rm -rf node_modules/
npm i -g npm npm-check-updates
ncu -g #update globals
ncu -u #update locals
npm I

更新:您可以使用yarn升级交互式--如果您使用yarn,则为最新版本