npm-update

概要

npm update [-g] [<pkg>...]
aliases:up,upgrade

描述

  • 这个命令将更新所有的包到指定主版本下的最新版本,要符合semver规范。

  • 若node_modules下包缺失,但package.json的dependencies指定了依赖包,此命令还会重新安装新包。若命令中加上--save-dev的话,还会安装devDependencies下丢失的包。

> npm update --save-dev
  • 如果指定了-g标志,则该命令将更新全局安装的包。
> npm update -g
  • 若指定包名,则仅更新指定的包;若没有指定包名,则更新所有的包。
> npm update jquery
  • [email protected]及之后版本,npm update只会检查顶级依赖项的包。但在这之前的版本会递归地检查所有的依赖关系的包。若想和旧版本一样功能,递归所有依赖关系的包,使用方式如下。
> npm --depth 9999 update

例子

注意:这些例子针对的是[email protected]或之后版本。对于旧版本npm,命令中必须指定--depth 0。

对于下面的例子,假设当前的包是app,它的依赖包有dep1(dep2等等)。dep1发布的版本:

{
  "dist-tags": { "latest": "1.2.2" },
  "versions": [
    "1.2.2",
    "1.2.1",
    "1.2.0",
    "1.1.2",
    "1.1.1",
    "1.0.0",
    "0.4.1",
    "0.4.0",
    "0.2.0"
  ]
}
Caret Dependencies

若app的package.json写入的是:

"dependencies": {
  "dep1": "^1.1.1"
}

运行npm update将安装[email protected],由于^1.1.1相当于>=1.1.1 <2.0.0,其中满足条件的版本有好几个,选择符合条件中的最大的版本,即1.2.2。

Tilde Dependencies

若app的package.json写入的是:

"dependencies": {
  "dep1": "~1.1.1"
}

在这种情况下,运行npm update将会安装[email protected]。即使latest标签指向1.2.2,也不会安装1.2.2。由于~1.1.1这相当于>=1.1.1 <1.2.0,所以能满足的版本,只有1.1.2。

Caret Dependencies below 1.0.0

若app依赖的包dep1版本低于1.0.0,例如:

"dependencies": {
  "dep1": "^0.2.0"
}

npm update将安装[email protected],^0.2.0相当于 >=0.2.0 <0.3.0,因为没有其他版本满足,所以更新版本仍为0.2.0。

更新全局的安装包

npm update -g将把该update操作应用于每个全局的安装包,配合outdated命令,查看哪些包需要更新。

results matching ""

    No results matching ""