回答:
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
フラグが追加されない限り、devDependencies をインストール/更新します--production
npm update
フラグが追加されない限り、devDependencies を無視します--dev
なぜ使用npm install
するのですか?
でnpm install
依存関係を処理する以外にも、さまざまなことを行うからpackage.json
です。npm installで確認できるように、次のことができます...
PATH
)。npm install -g <name>
--force
npm install --save somePackage
*依存関係に*を保存することは可能ですか?
postinstall
インストール時に実行するようなスクリプトは更新時にではないことにも注意します。
install
でupdate
動作が異なるpackage.json
場合は、これらのケースを例に追加すると便利です。
1.3.0 -> 1.3.1
これはに似て^1.3.0
い^
ますが、メジャーバージョンを更新します1.3.0 -> 1.4.0
。
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に関係なく、常に最新バージョンに更新されますが、package.jsonでinstall
指定されたバージョンは尊重されますか?
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
更新された場合に依存関係をフェッチするように設計されました npm install
内から呼び出すMakefile
と、無限再帰が発生しますが、呼び出しnpm update
は正常に機能し、すべての依存関係をインストールして、make
直接呼び出された場合でもビルドを続行できるようにします。
redis
、モジュール、およびother_module
以前のバージョンを必要としredis
、npm install other_module
それを保証するother_module
古いバージョンを使用します。other_module/node_modules/redis
必要に応じて追加します。
~1.3
ですか?