Was bedeutet "hat eine nicht erfüllte Peer-Abhängigkeit", wenn ein Paket mit Garn installiert wird?

73

Ich habe eine Neuinstallation von yarn(via npm install yarn -g) und habe versucht, ein paar Pakete mit zu installieren

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

Ich habe während der Installation einige Warnungen erhalten, wie z

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

Was bedeutet das genau und konkret: Warum werden yarndiese Abhängigkeiten nicht selbst installiert? (wenn sie gebraucht werden)

Eine Schwesterfrage (über npm) zum gleichen Thema liefert einige Antworten, die darauf hindeuten, i) zu aktualisieren, npmii) zu entfernen, node_modulesda ein Fehler beim npmUmgang mit Abhängigkeiten vorliegt.

Wie ist der Status für solche Warnungen yarn?Ist das wirklich eine Warnung (= etwas, das ich verwerfen kann)?Ich kann sie nicht verwerfen (der webpackBuild schlägt fehl) und muss sie manuell installieren. Gleichzeitig wurden einige Abhängigkeiten installiert, sodass ich nicht verstehe, warum einige übersehen wurden (während sie manuell installiert werden können).

WoJ
quelle
Hey @WoJ, hast du herausgefunden, was der Grund war? Ich habe selbst den gleichen Zweifel ...
Bruno Belotti
1
Ich bin kein Muttersprachler und habe gerade die Meldung "X hat nicht erfüllte Peer-Abhängigkeit Y" auf meinem Laptop beobachtet. Bis ich diese SO-Frage gegoogelt habe, dachte ich, der Satz bedeutet "[Installation] X hat dazu geführt, dass Abhängigkeiten von Y nicht erfüllt werden", während sie bedeuten "X hat nicht erfüllte Peer-Abhängigkeiten ..."
Grzegorz Oledzki
1
Wow bei @BrunoBelotti - heute ist auch der 27. November! Ich bin hier, um die Antwort dafür zu sehen: 'D
Akhila

Antworten:

59

Was ist eine Peer-Abhängigkeit?

Hier einige nützliche Lektüre auf Beziehungsarten, und hier ist Informationen über Peer - Abhängigkeiten, aber zusammenfassen:

Abhängigkeit : Eine Bibliothek / ein Paket, das / das Sie ausführen möchten.
Peer-Abhängigkeit : Wird verwendet, um eine Bibliothek / ein Paket anzugeben, in die bzw. das Ihr Projekt eingebunden wird.

Das Paket vue-loaderhat eine Peer-Abhängigkeit von vue-template-compiler- vue-loaderfungiert als Plugin fürvue-template-compiler

Warum werden sie nicht standardmäßig installiert?

Peer-Abhängigkeiten wurden automatisch bis npm @ 3 installiert (dem Garn folgte). Dies wurde aufgrund häufig verwirrenden Verhaltens gestoppt. Die Installation eines anderen Plugins mit einer widersprüchlichen Anforderung würde beispielsweise zu einem Fehler führen.

Wir werden auch das Verhalten von PeerDependencies in npm @ 3 ändern. Wir werden die Peer-Abhängigkeit nicht mehr automatisch herunterladen. Stattdessen werden wir Sie warnen, wenn die Peer-Abhängigkeit noch nicht installiert ist. Dies erfordert, dass Sie PeerDependency-Konflikte manuell selbst lösen. Auf lange Sicht sollte dies jedoch die Wahrscheinlichkeit verringern, dass Sie mit den Abhängigkeiten Ihrer Pakete in eine schwierige Situation geraten. [13. Februar 2015]

Aktualisieren

Wie hier installiert, installiert npm @ 7 jetzt Peer-Abhängigkeiten.
Die Motivation für diese Entscheidung finden Sie hier

Leighton
quelle
1
Es ist nur eine Warnung, aber normalerweise schlägt die Ausführung fehl, wenn eine Abhängigkeit nicht erfüllt ist. Warum scheint es also möglich zu sein, diese Warnung einfach zu ignorieren?
Jean Paul
Was soll ich machen? Ich benutze Garn. Soll ich das ignorieren oder manuell installieren? Sie haben nur das Update von npm erwähnt, nicht das Garn. Frage ist über Garn.
Akhila