npm install 和 npm update 处理 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 更新
另外:默认情况下,install
和 update
处理 devDependencies 的方式不同
npm install 将安装/更新 devDependencies 除非添加了 --production 标志
npm update 将忽略 devDependencies 除非添加了 --dev 标志
为什么要使用 npm install
?
因为除了在 package.json
中处理依赖项之外,npm install
还可以做更多的事情。正如您在 npm install 中看到的,您可以...
手动安装节点模块
使用 npm install -g
安装由 git 标签描述的某些版本
从 git url 安装
使用 --force 强制重新安装
npm install 安装 package.json
文件中列出的所有模块及其依赖项。
npm update 更新 node_modules
目录中的所有包及其依赖项。
npm install express 仅安装 express 模块及其依赖项。
npm update express 更新 express 模块(从 npm@2.x 开始,它不会更新其依赖项)。
因此,更新适用于您已经拥有该模块并希望获得新版本的情况。
npm install
还是 npm update
?或者,换句话说,我现在正在使用 npm install
,它似乎也在进行更新,我有什么理由应该使用 npm update
?
update
将始终更新到最新版本,而不管 package.json 是什么,而 install
将尊重 package.json 中给出的版本?
update
安装(或更新到)最新版本的模块。 install
如果未显示模块的最新版本,则安装它,否则保持当前版本。
npm update
将根据您的 package.json 更新到最新版本,而不是不管它。如果你有 "express": "3.x" 并且你使用的是 3.1.0 版本,它将更新到最新的 3.x 标签。如果有 4.x 版本,则不会安装最新的。
在大多数情况下,这将安装在 npm 上发布的模块的最新版本。
npm install express --save
或更好地将模块升级到最新版本使用:
npm install express@latest --save --force
--save
:包将出现在您的依赖项中。
更多信息:npm-install
npm install express@latest --save --force
正是我想要的。
已经提到了许多区别。这里还有一个:
在源目录顶部运行 npm install
将运行各种脚本:prepublish
、preinstall
、install
、postinstall
。根据这些脚本的作用,npm install
可能会比仅安装依赖项做更多的工作。
我刚刚有一个用例,其中 prepublish
将调用 make
,而 Makefile
旨在在 package.json
更新时获取依赖项。从 Makefile
调用 npm install
会导致无限递归,而调用 npm update
工作得很好,安装所有依赖项以便即使直接调用 make
也可以继续构建。
redis
模块,并且 other_module
需要旧版本的 redis
,则 npm install other_module
将保证 other_module
将使用旧版本。必要时可添加other_module/node_modules/redis
。
npm update
:使用 package.json 中的最新节点模块安装和更新
npm install
:安装 package.json 中定义的节点模块(不更新)
npm update
将省略 package-lock.json
中的大量依赖项。为了使所有必需的包都可用并且 package-lock.json
正确,我总是必须在 npm update
之后立即执行 npm install
。
不定期副业成功案例分享
~1.3
呢?npm install --save somePackage
将 * 保存到依赖项?postinstall
这样的脚本在安装时运行,但不是在更新时运行。install
和update
在package.json
中指定的 git URL、git 标签等上的工作方式不同,那么最好将这些情况添加到示例中。