Einleitung: Warum schreit npm Sie an?
\n\nHaben Sie jemals npm install ausgeführt und so etwas gesehen?
npm WARN ts-patch@3.2.1 requires a peer of typescript@>=4.0 but none is installed. You must install peer dependencies yourself.\n\nKommt Ihnen bekannt vor? Wenn ja – Sie sind nicht allein. Diese Frage auf Stack Overflow hat tausende Aufrufe und Dutzende Kommentare von Entwicklern, die, genau wie Sie, einfach nur ein Paket installieren wollten und stattdessen Kopfschmerzen bekamen. Heute werden wir klären, was Peer-Abhängigkeiten sind, warum npm so beharrlich deren Installation verlangt und wie man richtig mit ihnen in TypeScript-Projekten arbeitet. Und ja, das wird keine langweilige Dokumentation, sondern eine lebendige Analyse mit Codebeispielen.
\n\nLos geht's!
\n\nWas sind Peer-Abhängigkeiten und wozu braucht man sie?
\n\nStellen Sie sich vor, Sie setzen ein Puzzle zusammen. Sie haben ein Hauptbild (Ihr Projekt) und mehrere Teile (Pakete). Manche Teile passen perfekt zueinander, aber nur, wenn Sie den richtigen Rahmen verwenden. In der npm-Welt ist dieser „Rahmen“ eine Peer-Abhängigkeit.
\n\nEine Peer-Abhängigkeit (oder „gleichberechtigte Abhängigkeit“) ist eine Anforderung eines Pakets, dass eine bestimmte Bibliothek im Projekt installiert sein muss, aber das Paket selbst wird sie nicht installieren. Warum? Weil diese Bibliothek bereits bei Ihnen vorhanden sein sollte und das Paket einfach mit ihr „befreundet“ ist, ohne Duplikate zu erzeugen.
\n\nZum Beispiel benötigt das Paket ts-patch (ein beliebtes Tool für TypeScript), dass typescript im Projekt installiert ist. Aber ts-patch installiert TypeScript nicht selbst – es geht davon aus, dass Sie es bereits hinzugefügt haben. Wenn TypeScript fehlt, gibt npm genau diese Warnung aus.
Warum ist das für TypeScript-Projekte wichtig?
\n\nTypeScript ist nicht nur eine Sprache, es ist ein Ökosystem. Viele Pakete (z.B. @types/react, ts-loader, eslint-plugin-typescript) arbeiten auf Basis von TypeScript. Wenn Sie TypeScript Version 5.0 installiert haben und das Paket 4.0+ benötigt, ist alles in Ordnung. Aber wenn TypeScript gar nicht vorhanden ist, beginnen die Probleme.
Hier ein reales Beispiel aus der Praxis. Angenommen, Sie schreiben ein kleines Skript in TypeScript und verwenden ts-patch zur Code-Transformation. Sie führen aus:
npm install ts-patch --save-dev\n\nUnd erhalten:
\n\nnpm WARN ts-patch@3.2.1 requires a peer of typescript@>=4.0 but none is installed.\nYou must install peer dependencies yourself.\n\nWas tun? In Panik geraten? Nein. Installieren Sie einfach TypeScript:
\n\nnpm install typescript --save-dev\n\nProblem gelöst. Aber was, wenn Sie bereits TypeScript haben, aber in einer anderen Version? Hier wird es richtig interessant.
\n\nVergleich der Ansätze: Wie man Peer-Abhängigkeiten installiert
\n\nEs gibt mehrere Möglichkeiten, mit diesem Fehler umzugehen. Vergleichen wir sie am Beispiel eines TypeScript-Projekts.
\n\nAnsatz 1: Manuelle Installation (Klassiker)
\n\nDer einfachste und zuverlässigste Weg – lesen Sie die Warnung und installieren Sie das benötigte Paket manuell. Sie sehen, dass typescript@>=4.0 benötigt wird, und fügen es hinzu:
npm install typescript@^4.0 --save-dev\n\nVorteile:
\n- \n
- Volle Kontrolle über die Version. \n
- Keine versteckten Überraschungen. \n
Nachteile:
\n- \n
- Man muss die npm-Meldungen aufmerksam lesen. \n
- Bei vielen Paketen wird der Prozess mühsam. \n
Dieser Ansatz ist ideal für kleine Projekte, bei denen Sie genau wissen, welche Abhängigkeiten Sie benötigen.
\n\nAnsatz 2: Automatische Installation mit npx oder Plugins
\n\nEinige Tools, wie npm-check oder install-peerdeps, können automatisch alle Peer-Abhängigkeiten für ein bestimmtes Paket installieren. Installieren Sie das Dienstprogramm global:
npm install -g install-peerdeps\n\n