NodeJS – 如何将package.json中的每个依赖项更新到最新版本?

我从另一个项目中复制了package.json,现在想要将所有依赖项添加到他们的最新版本,因为这是一个新项目,如果它破坏了我不介意修复它。

最简单的方法是什么?

我现在知道的最好的方法是运行npm info express version然后为每个人手动更新package.json。肯定有更好的办法。

{
  "name": "myproject",
  "description": "my node project",
  "version": "1.0.0",
  "engines": {
    "node": "0.8.4",
    "npm": "1.1.65"
  },
  "private": true,
  "dependencies": {
    "express": "~3.0.3", // how do I get these bumped to latest?
    "mongodb": "~1.2.5",
    "underscore": "~1.4.2",
    "rjs": "~2.9.0",
    "jade": "~0.27.2",
    "async": "~0.1.22"
  }
}

我现在是npm-check-updates的合作者,这是解决这个问题的一个很好的解决方案。


看起来npm-check-updates是现在实现这一目标的唯一方法。

npm i -g npm-check-updates
ncu -u
npm install

在npm <3.11:

只需将每个依赖项的版本更改为*,然后运行npm update --save。(注意: 最近(3.11)版本的npm中断了)。

之前:

  "dependencies": {
    "express": "*",
    "mongodb": "*",
    "underscore": "*",
    "rjs": "*",
    "jade": "*",
    "async": "*"
  }

后:

  "dependencies": {
    "express": "~3.2.0",
    "mongodb": "~1.2.14",
    "underscore": "~1.4.4",
    "rjs": "~2.10.0",
    "jade": "~0.29.0",
    "async": "~0.2.7"
  }

当然,这是更新依赖关系的直言不讳。如果 – 正如你所说的那样 – 项目是空的,没有任何东西可以打破,这很好。

另一方面,如果您正在一个更成熟的项目中工作,您可能希望在升级之前验证依赖项中是否存在重大更改。

要查看哪些模块已过时,请运行npm outdated。它将列出任何已安装的具有较新版本的依赖项。


npm-check-updates 是一个实用程序,可以使用所有依赖项的最新版本自动调整package.json

请参阅https://www.npmjs.org/package/npm-check-updates

$ npm install -g npm-check-updates
$ ncu -u
$ npm install 

TLDR; (针对较新的NPM版本更新)

事情已经发生了一些变化,因为这些答案最初是写的。

npm 2+: npm outdatednpm update+npm shrinkwrap

较旧的npm:npm-check-updates包+npm shrinkwrap

一定要收缩你的deps,否则你可能会结束一个死的项目。我前几天拿出了一个项目而且它不会运行,因为我的deps已经过时/更新/乱七八糟。如果我收缩包装,npm就会安装我需要的东西。


细节

对于那些做到这一点的好奇者,我推荐这里:

使用npm-check-updatesnpm outdated建议最新版本。

# `outdated` is part of newer npm versions (2+)
$ npm outdated
# If you agree, update.  
$ npm update

#       OR

# Install and use the `npm-check-updates` package.
$ npm install -g npm-check-updates
# Then check your project
$ npm-check-updates
# If you agree, update package.json.
$ npm-check-updates -u

然后做一个干净的安装(没有我有一些依赖警告)

$ rm -rf node_modules
$ npm install 

最后,保存确切的版本npm-shrinkwrap.jsonnpm shrinkwrap

$ rm npm-shrinkwrap.json
$ npm shrinkwrap

现在,现在npm install将使用精确版本npm-shrinkwrap.json

如果你检查npm-shrinkwrap.jsongit,所有安装将使用完全相同的版本。

这是一种从开发过渡(所有更新,一直)到生产(没有人接触任何东西)的方法。

添加评论

友情链接:蝴蝶教程