Kennisbank.

Wat is een Dependency Manager?

Een dependency manager is een aparte tool die gebruikt wordt tijdens het ontwikkelen van software. Tegenwoordig bestaat een softwareproject niet meer alleen uit zelfgeschreven code, maar wordt er vaak gebruik gemaakt van losse open-source packages. Deze packages hebben allemaal een eigen taak en zorgen ervoor dat je stukken functionaliteit niet meer zelf hoeft te schrijven en te testen. Een voorbeeld is de Mollie API client die het makkelijk maakt om te communiceren met de Mollie API. Deze client is geschreven door de ontwikkelaars van Mollie zelf om het andere ontwikkelaars makkelijk te maken hun product te gebruiken.

Wat is een Dependency Manager?

Welke Dependency managers zijn er?

Elke programmeer taal heeft zo zijn eigen dependency manager. Hoewel ze allemaal anders gemaakt zijn, doen ze in de essentie allemaal hetzelfde.

  1. Composer (PHP - Laravel)
  2. Gradle (Java, Android apps)
  3. Node Package Manager (NPM) (JavaScript)
  4. Yarn (Alternatief voor NPM) (JavaScript - Angular)
  5. Maven (Java, Android apps)
  6. En nog veel meer

In essentie zorgt elke dependency manager ervoor dat de juiste packages worden binnengehaald. Welke dit zijn wordt bepaald in het configuratie bestand van de dependency manager. Zo gebruikt composer de composer.json, npm en yarn de package.json, gradle de build.gradle en maven de pom.xml. In deze configuratie bestanden wordt niet alleen bepaald welke packages maar ook welke versie en uit welke repository deze opgehaald moeten worden.

Een repository is een plek online waar de packages kunnen worden opgehaald door de naam en versie van dat package te gebruiken. De meeste dependency managers hebben eigen databases waaruit ze de packages halen. Bijvoorbeeld maven central voor maven en gradle, npm voor npm en packagist voor composer.

Waarom maken we gebruik van een Dependency Manager?

Het gebruik van packages zorgt ervoor dat er minder standaard functionaliteiten geprogrammeerd hoeft te worden. Zo kan er meer tijd besteed worden aan de project specifieke functionaliteiten. Echter kunnen er problemen ontstaan als twee verschillende programmeurs binnen het team gebruik maken van andere packages of andere versies van packages.

De dependency manager zorgt ervoor dat iedereen binnen het team dezelfde packages en ook dezelfde versies van de packages installeert. Dit wordt gedaan op basis van het configuratie bestand. Moet er een nieuw packages toegevoegd worden? Dan zal een van de ontwikkelaars deze toevoegen aan de configuratie, waarnaar alle andere ontwikkelaars direct hetzelfde package kunnen downloaden vanuit de repository.

Wordt er een nieuwe versie van een package uitgebracht, kan de dependency manager ervoor zorgen dat deze nieuwe versie bij alle ontwikkelaars beschikbaar wordt gesteld.