ほとんどの場合、npm @ 3(バージョン3)を使用しています。
ドキュメントで指定されているように、npmバージョン1と2はほとんどの場合peerDependencies
のインストールに使用されました。 Npmバージョン3ではこの動作が変更され、peerDependencies
はインストールされませんが、代わりにpeerDependencies
がインストールされていない場合は警告が表示されます。
npmバージョン1と2は、依存関係ツリーの上位に明示的に依存していない場合、自動的にpeerDependenciesをインストールします。 npm(npm @ 3)の次のメジャーバージョンでは、これはもはや当てはまりません。 peerDependencyが代わりにインストールされていないという警告が表示されます。 peerDependencies
が誤って使用されている時間のpeerDependencies
または大部分を使用している場合
変化の背後にある理由は、依存関係の地獄を避けるために、大部分でした。 peerDependencies
に関してnpm Githubにはいくつかの問題を説明し、解決策を導き出さなかった理由は何ですかpeerDependencies
のような多くの問題があります。
request
がインストールされていないとアプリケーションがクラッシュした場合、ほとんどの場合、アプリケーションがクラッシュします。 NPM環境では、現時点では、dependencies
はあなたrequire()
、devDependencies
は
peerDependencies
は、もともとほとんど「プラグイン」のためだったのパッケージでの問題に対処するために設計されたあなたrequire()
だけ発展のため、テストなどのパッケージされているパッケージです他のフレームワークやライブラリは、別の 'ホスト'パッケージを直接使用していない場合や、 'ホスト'パッケージを必要としている場合でも、別の 'ホスト'パッケージと共に使用するように設計されています。
たとえば、GruntプラグインはGruntで使用することを意図していますが、決してrequire('grunt');
とは使用できません。 grunt
をdependencies
として追加すると、決して使用されないパッケージの新しいダウンロード済みコピーが作成されます。たとえいくつかのプラグインが 'ホスト'パッケージに直接依存していて、dependencies
に 'ホスト'パッケージを指定していても、それは 'ホスト'パッケージの複数のコピーにつながります。 peerDependencies
は、「ホスト」のパッケージのバージョンに差し込まれたときに、パッケージが動作することを言うの方法ですので、あなたは、このパッケージをインストールする場合は、あなたはまた、この他のパッケージ手動をインストールする必要があります。
これは現在アプリケーションをインストールしていて、request
と表示されているため、インストールする必要があります古典的なdependencies
に私は、1
で終了する方法を見つけたよう
設計どおりに動作します。モジュールがインストールされているときに 'dependency'を使うときに依存関係をインストールしたいならば。コンシューマにどのバージョンの 'request'がインストールされているのかを管理させたい場合は、' peerDependency'を使います。この方法でインストールするには、2つの手順が必要です。あなたがインストールに失敗した場合は3つではありません... メジャーバージョンへの依存性を「2倍」にする方が良いでしょう。つまり、インストールされますが、コンシューママシンでは削除されます。密接に関連している:http://stackoverflow.com/questions/35207380/how-to-install-npm-peer-dependencies-automatically –