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

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


当前回答

使用*作为最新版本的版本,包括不稳定版本使用最新版本作为最新稳定版本的版本定义使用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"
},

其他回答

我最近不得不更新几个使用npm和package.json实现gruntfile.js魔法的项目。以下bash命令(多行命令)对我来说效果很好:

npm outdated --json --depth=0 | \
jq --ascii-output --monochrome-output '. | keys | .[]' | \
xargs npm install $1 --save-dev

这里的想法是:将npm过时的输出作为json传输到jq(jq是一个json命令行解析器/查询工具)(注意npm过时时使用--depth参数)jq将仅将输出剥离到顶级包名称。最后xargs将每个LIBRARYNAME一次一个放入npm install LIBRARYNAME--save dev命令

以上是我在机器运行时所做的工作:节点=v0.11.10 osx=10.9.2 npm=1.3.24

这需要:xargs公司http://en.wikipedia.org/wiki/Xargs(我相信是我的机器固有的)和jq公司http://stedolan.github.io/jq/(我用brew install jq安装了它)

注意:我只使用--save-dev将更新的库保存到json键devDependencies中的package.json,这是我的项目的要求,很可能不是你的。

之后,我用一个简单的

npm outdated --depth=0

此外,您可以使用

npm list --depth=0

由于距离最初的问题已经过去了近10年,许多答案要么过时,要么不推荐。

我会使用与包管理器无关的东西,即可以与npm、pnpm、yarn或其他东西一起工作。

最近我一直在使用taze

您可以将其添加到开发依赖项中并从那里运行,也可以在不安装npx-taze或pnx-taze等的情况下运行。

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

语义版本Regex

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

如何使用

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

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

用星号替换所有匹配项。

运行npm更新--保存

这会很有帮助npm过时|awk‘{if(NR>1){print$1“@”$4}}‘|xargs npm i

在2023年,我简单地使用了:

$npm更新

许多软件包都在此时更新,但您可能会收到一条消息,其中一些需要修复。在这种情况下,我跑了:

$npm审计修复--强制

最后,为了确保它已全部安装,我运行

$npm安装

就是这样,我的包更新了。无需手动编辑配置文件。