将所有Node的依赖关系更新为最新版本的方法

286 阅读2分钟

如何更新package.json文件中存储的所有npm依赖项,使其成为可用的最新版本?

当你使用npm install <packagename> 安装一个包时,该包的最新可用版本会被下载并放在node_modules 文件夹中,并在你当前文件夹中存在的package.jsonpackage-lock.json 文件中添加相应的条目。

npm会计算依赖关系,并且也会安装这些依赖关系的最新可用版本。

比方说,你安装了 cowsay,这是一个很酷的命令行工具,可以让你让一头牛说些什么

当你npm install cowsay ,这个条目会被添加到package.json 文件中。

{
  "dependencies": {
    "cowsay": "^1.3.1"
  }
}

而这是对package-lock.json 的摘录,为了清晰起见,我删除了嵌套的依赖项。

{
  "requires": true,
  "lockfileVersion": 1,
  "dependencies": {
    "cowsay": {
      "version": "1.3.1",
      "resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz",
      "integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkMAjufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==",
      "requires": {
        "get-stdin": "^5.0.1",
        "optimist": "~0.6.1",
        "string-width": "~2.1.1",
        "strip-eof": "^1.0.0"
      }
    }
  }
}

现在这2个文件告诉我们,我们安装了cowsay的1.3.1 ,而我们的更新规则是^1.3.1 ,对于npm的版本规则来说,这意味着npm可以更新到补丁和次要版本。1.3.2,1.4.0 等等。

但对于破坏兼容性的主要版本变化,也就是本例中的2.0 及以上版本,则不能更新。

如果有一个新的次要版本或补丁版本,我们输入npm update ,安装的版本就会被更新,package-lock.json 文件就会勤快地填上新的版本。

package.json 保持不变。

要发现新版本的软件包,你可以运行npm outdated

下面是我有一段时间没有更新的一个软件库中的一些过时的软件包的列表。

其中一些更新是主要版本。运行npm update 不会更新这些的版本。主要版本从不以这种方式更新,因为它们(顾名思义)会带来破坏性的变化,而npm ,以省去你的麻烦。

要将所有软件包更新到新的主要版本,请在全局范围内安装npm-check-updates 包。

npm install -g npm-check-updates

然后运行它。

这将把package.json 文件中的所有版本提示升级到dependenciesdevDependencies ,这样npm就可以安装新的主要版本。

现在你已经准备好运行更新了。

如果你刚刚下载的项目没有依赖node_modules ,你想先安装闪亮的新版本,只要运行