npm install
和npm update
之间的实际区别是什么?我什么时候应该使用哪个?
答案 0 :(得分:573)
package.json 中指定的包版本的npm install和npm update处理之间的差异:
{
"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
另外:install
和update
默认情况下处理devDependencies
npm install
标志,否则--production
将安装/更新 devDependencies npm update
标志,否则--dev
将忽略 devDependencies 为什么要使用npm install
?
因为npm install
除了在package.json
中处理依赖项之外,还有更多功能。
正如您在npm install中所看到的,您可以......
PATH
npm install -g <name>
中)
--force
答案 1 :(得分:73)
npm install 安装package.json
文件中列出的所有模块及其依赖项。
npm update 更新node_modules
目录中的所有包及其依赖项。
npm install express 仅安装快速模块及其依赖项。
npm update express 更新express模块(从npm@2.x开始,它不会更新其依赖项)。
因此,当您已经拥有该模块并希望获得新版本时,可以进行更新。
答案 2 :(得分:44)
在大多数情况下,这将安装在npm上发布的最新版本的模块。
npm install express --save
或更好地将模块升级到最新版本:
npm install express@latest --save --force
--save
:包将出现在您的依赖项中。
更多信息:npm-install
答案 3 :(得分:8)
已经提到了许多区别。还有一个:
在源目录顶部运行npm install
将运行各种脚本:prepublish
,preinstall
,install
,postinstall
。根据这些脚本的作用,npm install
可能比仅安装依赖项做更多的工作。
我刚刚有一个用例prepublish
会调用make
而Makefile
用于在package.json
更新后获取依赖关系。从npm install
内调用Makefile
将导致无限递归,而调用npm update
工作正常,安装所有依赖项,以便即使make
是...
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
...
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enable-lookups="false" secure="true">
<ssl name="localhost" key-alias="localhost" password="server" certificate-file="${jboss.server.config.dir}/server.jks" certificate-key-file="${jboss.server.config.dir}/server.jks" ca-certificate-file="${jboss.server.config.dir}/truststore.jks" protocol="TLSv1" verify-client="true" />
</connector>
...
</subsystem>
...
,构建也可以继续直接打电话。
答案 4 :(得分:1)
npm update
:安装并更新package.json中的最新节点模块
npm install
:安装在package.json中定义的节点模块(不更新)