NPM的安装和更新有什么不同?

npm installnpm update之间的实际区别是什么?什么时候用哪个?

273082 次浏览

npm安装安装在package.json文件中列出的所有模块及其依赖项。

npm更新更新node_modules目录下的所有包及其依赖项。

NPM安装快讯只安装express模块及其依赖项。

NPM更新快递更新express模块(从npm@2.x开始,它不更新其依赖项)。

因此,当您已经拥有模块并希望获得新版本时,才会进行更新。

npm安装npm更新处理package.json中指定的包版本的区别:

{
"name":          "my-project",
"version":       "1.0",                             // install   update
"dependencies":  {                                  // ------------------
"already-installed-versionless-module":  "*",     // ignores   "1.0" -> "1.1"
"already-installed-semver-module":       "^1.4.3" // ignores   "1.4.3" -> "1.5.2"
"already-installed-versioned-module":    "3.4.1"  // ignores   ignores
"not-yet-installed-versionless-module":  "*",     // installs  installs
"not-yet-installed-semver-module":       "^4.2.1" // installs  installs
"not-yet-installed-versioned-module":    "2.7.8"  // installs  installs
}
}

总结:唯一的区别是已经安装的具有模糊版本控制的模块

  • npm install忽略
  • npm update更新

另外: installupdate默认处理devDependencies不同

  • 除非添加--production标志,否则npm install将变成安装/更新开发依赖
  • 除非添加--dev标志,否则npm update将变成忽略开发依赖

为什么要使用npm install ?

因为npm install除了处理package.json中的依赖关系外,还做了更多的事情。 正如你在npm安装中看到的,你可以…

  • 手动安装节点模块
  • 使用npm install -g <name>将它们设置为全球(将它们放在shell的PATH中)
  • 安装由git标记描述的特定版本
  • 从git url安装
  • 强制重新安装--force

在大多数情况下,这将安装在npm上发布的模块的最新版本。

npm install express --save

或者最好将模块升级到最新版本使用:

npm install express@latest --save --force

--save:包将出现在你的依赖项中。

更多信息:npm-install

前面已经提到了许多区别。这里还有一个:

在源目录的顶部运行npm install将运行各种脚本:prepublishpreinstallinstallpostinstall。根据这些脚本的作用,npm install可能要做的工作远不止安装依赖项。

我刚刚有一个用例,其中prepublish将调用makeMakefile被设计为获取依赖,如果package.json得到更新。从Makefile中调用npm install将导致无限递归,而调用npm update工作得很好,安装所有依赖项,这样即使直接调用make,构建也可以继续进行。

npm update:使用package.json中的最新节点模块进行安装和更新

npm install:安装包中定义的节点模块。json(没有更新)