Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js npm安装与更新-什么&x27;有什么区别?_Node.js_Npm - Fatal编程技术网

Node.js npm安装与更新-什么&x27;有什么区别?

Node.js npm安装与更新-什么&x27;有什么区别?,node.js,npm,Node.js,Npm,npm安装和npm更新之间的实际区别是什么?什么时候应该使用哪个?npm install安装package.json文件中列出的所有模块及其依赖项 npm update更新node\u modules目录中的所有包及其依赖项 npm install express只安装express模块及其依赖项 npm update express更新express模块(从npm@2.x,它不会更新其依赖项) 因此,更新适用于您已经拥有模块并希望获得新版本的情况。package.json中指定的包版本之间的差

npm安装
npm更新
之间的实际区别是什么?什么时候应该使用哪个?

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

npm update更新
node\u modules
目录中的所有包及其依赖项

npm install express只安装express模块及其依赖项

npm update express更新express模块(从npm@2.x,它不会更新其依赖项)

因此,更新适用于您已经拥有模块并希望获得新版本的情况。

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安装忽略
  • 通过
    npm update
另外
安装
更新
默认情况下以不同的方式处理依赖性

  • npm安装
    安装/更新devdeependencies,除非添加了
    --生产
    标志
  • npm更新
    忽略devdependency,除非添加了
    --dev
    标志

为什么要使用
npm安装

因为
npm install
除了在
package.json
中处理依赖项之外,还能做更多的事情。 正如你所看到的,你可以

  • 手动安装节点模块
  • 使用
    npm install-g
  • 安装git标记描述的某些版本
  • 从git url安装
  • 使用
    强制重新安装--force

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

npm install express --save
或更好地将模块升级到最新版本使用:

npm install express@latest --save --force
--保存
:包将出现在依赖项中


更多信息:

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

在源目录顶部运行
npm install
将运行各种脚本:
prepublish
preinstall
install
postinstall
。根据这些脚本的功能,npm安装可能比安装依赖项做更多的工作


我刚刚遇到了一个用例,
prepublish
将调用
make
,并且
Makefile
被设计为在
package.json
更新时获取依赖项。从
Makefile
中调用
npm install
会导致无限递归,而调用
npm update
效果很好,安装所有依赖项,以便即使直接调用了
make
,也可以继续生成。

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


npm install
:安装package.json中定义的节点模块(无更新)

如果未在package.json文件中指定特定版本,npm install将获得模块的最新版本。这是一种更新。那么我应该使用什么,
npm安装
npm更新
?或者,换句话说,我现在使用的是
npm install
,它似乎也在进行更新,我有什么理由要使用
npm update
?因此
update
将始终更新到最新版本,而不管package.json如何,而
install
将遵守package.json中给出的版本?
update
安装(或更新)模块的最新版本
install
安装模块的最新版本(如果未显示),否则将保持当前版本。@Borek
npm update
将根据您的package.json更新到最新版本,而不管它是什么。如果您有“express”:“3.x”,并且您使用的是3.1.0版,它将更新为最新的3.x标签。如果有4.x版本,则不会安装最新版本。
npm installexpress@latest--save--force
正是我想要的。在大多数情况下?还有其他情况吗?那
~1.3
呢?如果版本像^5.0.9呢?还有,是否可以让
npm安装--save somePackage
将*保存到依赖项?我还要注意,像
postinstall
这样的脚本在安装时运行,而不是在更新时运行。如果
install
update
在git URL、git标记上的工作方式不同,在
package.json
中指定了等,那么最好将这些情况添加到示例中。@BoyanKushlev我想你指的是次要和补丁/错误修复,而不是主要和次要。对于所有示例,Major是1。其中一个含义是,如果您更新了
redis
模块,并且
other_模块
需要较旧版本的
redis
npm install other_模块
将保证
other_模块
将使用较旧版本。如果需要,它可以添加
其他\u模块/节点\u模块/redis
。使用npm 6.9.0版,我观察到以下行为:
npm update
将省略
包锁.json
中的大量依赖项。要使所有必需的软件包都可用,并且
package lock.json
要正确,我必须在
npm update
之后立即执行
npm install