Najprawdopodobniej używasz npm @ 3 (wersja 3).
Jak wskazano w dokumentacji, wersje npm 1 i 2 używane w większości przypadków do instalowania peerDependencies
. Wersja 3 Npm zmienia to zachowanie i nie instaluje już peerDependencies
, ale zamiast tego wyświetla ostrzeżenie, gdy peerDependencies
nie jest zainstalowane.
npm wersje 1 i 2 automatycznie instalują zależności równorzędne, jeśli nie są jawnie zależne od wyższych w drzewie zależności. W następnej głównej wersji npm (npm @ 3), to już nie będzie miało miejsca. Otrzymasz ostrzeżenie, że peerDependency nie jest zainstalowane.
Przyczyny zmian były głównie w celu uniknięcia piekła zależnościami podczas korzystania peerDependencies
lub większość czasu peerDependencies
używane niewłaściwie. Istnieje wiele problemów związanych z npm Github dotyczących peerDependencies
, takich jak this one, wyjaśniających niektóre problemy i co doprowadziło do rozwiązania problemu, aby nie instalować jeszcze wersji peerDependencies
.
Jeśli aplikacja ulegnie awarii, jeśli request
nie jest zainstalowana, w większości przypadków jest to wymagane. W chwili obecnej w środowisku npm, dependencies
są pakiety, które require()
, devDependencies
są pakiety ty require()
tylko dla rozwoju, badań itp
peerDependencies
były pierwotnie zaprojektowane do rozwiązywania problemów z pakietami, które były głównie „wtyczki” dla inne frameworki lub biblioteki, zaprojektowane do użycia z innym pakietem "hosta", nawet jeśli nie używają bezpośrednio lub nie wymagają pakietu "hosta".
Na przykład wtyczki Grunt są przeznaczone do używania z programem Grunt, ale nigdy nie mają wartości require('grunt');
. Dodanie grunt
jako dependencies
doprowadziłoby do pobrania nowej kopii pakietu, która nigdy nie byłaby używana. Nawet jeśli niektóre wtyczki mają bezpośrednie zależności od pakietu 'host' i określają pakiet 'host' w dependencies
, to mogłoby to doprowadzić do wielu kopii pakietu 'host'.
peerDependencies
jest sposobem na powiedzenie, że pakiet działa po podłączeniu w wersji pakietu „gospodarza”, więc jeśli zainstalować ten pakiet, ty należy również zainstalować ten drugi pakiet ręcznie.
To jest zachowanie, które obecnie masz, instalujesz aplikację, wymieniasz request
jako peerDependencies
, więc powinieneś zainstalować ją, by działała i usuwała ostrzeżenie, w przeciwnym razie musisz się przenieść do klasycznego dependencies
.
Prawie działa jak zaprojektowano; jeśli chcesz, aby zależność była instalowana, gdy twój moduł jest zainstalowany, gdy używasz 'zależności'. Jeśli chcesz, aby konsumenci zarządzali, która wersja 'request' jest zainstalowana, użyjesz' peerDependency'. Instalacja tego wymaga tylko dwóch kroków; raczej trzy, jeśli nie uda ci się zainstalować ... Prawdopodobnie lepiej byłoby zrobić "zależność" od głównej wersji: "2.x", w ten sposób zostanie ona zainstalowana, ale zostanie odfiltrowana na komputerze użytkownika. blisko związane: http://stackoverflow.com/questions/35207380/how-to-install-npm-peer-dependencies-automatically –