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
安装
和更新
默认情况下以不同的方式处理依赖性
将安装/更新devdeependencies,除非添加了npm安装
标志--生产
将忽略devdependency,除非添加了npm更新
标志--dev
为什么要使用
npm安装
?
因为npm install
除了在package.json
中处理依赖项之外,还能做更多的事情。
正如你所看到的,你可以
- 手动安装节点模块
- 使用
npm install-g
- 安装git标记描述的某些版本
- 从git url安装
- 使用
强制重新安装--force
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
安装模块的最新版本(如果未显示),否则将保持当前版本。@Boreknpm 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
。