Eine Dependency (Abhängigkeit) ist eine externe Software-Komponente, die ein Projekt benötigt, um zu funktionieren. Statt jede Funktion selbst zu schreiben, nutzen Entwickler Bibliotheken und Frameworks — vom Framework für Web-Oberflächen bis zur kleinen Utility für Datumsberechnungen. Das Verwalten dieser Abhängigkeiten ist eine zentrale Aufgabe moderner Softwareentwicklung.
Direkte und transitive Abhängigkeiten
Eine direkte Dependency nutzt das Projekt selbst. Eine transitive Dependency wird nur indirekt benötigt, weil eine direkte Abhängigkeit sie ihrerseits voraussetzt. So entstehen schnell Abhängigkeitsbäume mit dutzenden Komponenten — ein Grund, warum Paketverwaltung und Lockfiles so wichtig sind.
Paketverwaltung übernimmt die Arbeit
npm install express # Node.js
pip install requests # Python
composer require monolog # PHP
Paketmanager wie npm und pip laden die gewünschte Version samt transitiver Abhängigkeiten, prüfen Kompatibilität und dokumentieren den Stand. Ein Lockfile fixiert exakt die verwendeten Versionen, damit alle Entwickler und der CI/CD-Server dasselbe reproduzierbare Ergebnis bekommen.
Versionskennzeichnung und Aktualität
Viele Pakete folgen Semantic Versioning (SemVer): Hauptversion ändert sich bei inkompatiblen Änderungen, Nebenversion bei neuen Funktionen, Patchversion bei Fehlerkorrekturen. Regelmäßige Updates sind wichtig für Sicherheit und Stabilität — ein veraltetes Paket ist ein häufiges Einfallstor für Angriffe.
Praxis-Tipps
- Abhängigkeiten sparsam wählen: Jede Dependency bedeutet Wartung, Build-Zeit und potenzielle Sicherheitsrisiken.
- Lockfiles immer einchecken — sie machen Builds reproduzierbar.
- Beim Deployment genau die im Lockfile fixierten Versionen installieren.
- Tooling wie
npm auditoderpip-auditdeckt bekannte Schwachstellen in Dependencies auf.
Verwandte Grundlagen: Release, Compiler, git-Befehle, Callback, Lambda, Datentyp.