1. ホーム
  2. yarnpkg

[解決済み] yarnでパッケージをインストールするときの「has unmet peer dependency」の意味は?

2022-11-14 05:55:17

質問

私は、新しくインストールした yarn (経由 npm install yarn -g ) を使っていくつかのパッケージをインストールしようとしました。

yarn add vue-loader babel-loader style-loader css-loader file-loader webpack。

その後、インストール中に以下のような警告がいくつか表示されました。

警告 "[email protected]" has unmet peer dependency "vue-template-compiler@^2.0.0".

A 姉妹質問 (約 npm について)同じテーマで、いくつかの回答が得られました。

  1. 更新 npm
  2. 削除 node_modules にはバグがあるため npm にバグがあるためです。

警告にあるパッケージを破棄することができないのは webpack のビルドに失敗し、手動でインストールしなければならなくなりました。同時に、かなりの数の依存関係がインストールされたので、これらがなぜインストールされなかったのか理解できません。

上記の警告は何を意味するのでしょうか、また、なぜ yarn はこれらの依存関係を自分自身でインストールしないのでしょうか?

どのように解決するのですか?

ピア依存とは

ここで は依存性のタイプに関するいくつかの有用な読み物です。 はこちら はピア依存に関する情報ですが、要約します。

依存関係 : プロジェクトが動作するために必要なライブラリ/パッケージです。

ピア依存 : プロジェクトがフックするライブラリ/パッケージを示すために使用します。

パッケージは vue-loader には同位体の依存関係があります。 vue-template-compiler - vue-loader のプラグインとして動作します。 vue-template-compiler

なぜピア依存関係はデフォルトでインストールされないのですか?

ピア依存関係は、以前は自動的にインストールされていました。 npm@3 (これは yarn が追随しています) までは、ピア依存は自動的にインストールされていました。これは頻繁に混乱を招く動作のため、停止されました。例えば、競合する要件を持つ別のプラグインをインストールすると、エラーになります。

npm@3では、peerDependenciesの動作も変更する予定です。peerDependenciesを自動的にダウンロードすることはもうありません。その代わりに、ピア依存関係がまだインストールされていない場合に警告を表示します。これにより、peerDependencyの競合を自分で手動で解決する必要がありますが、長い目で見れば、パッケージの依存関係で厄介な場所に行き着く可能性は低くなるはずです。[2015 年 2 月 13 日] を参照してください。

アップデート

以下の通りです。 ここで npm@7 はピア依存をインストールするようになりました。

この決定の背景には、以下を参照してください。 を参照してください。