Een package manager is een tool die de externe codebibliotheken installeert, bijwerkt en bijhoudt waar een project van afhangt, packages genoemd. Moderne software wordt deels gebouwd uit herbruikbare stukken die anderen hebben geschreven. Een package manager haalt de juiste op, installeert de juiste versies en bewaart de hele lijst, zodat precies dezelfde opzet met één commando op een andere computer is te herbouwen.

Zie het als een automatisch magazijn voor een keuken. Je schrijft op welke ingrediënten een recept nodig heeft, en het systeem zoekt elk ervan op, controleert of het de juiste soort is en merkt op wanneer een ingrediënt zelf weer een ander nodig heeft. Het voorkomt dat je eindigt met onderdelen die niet bij elkaar passen. Tools als npm voor JavaScript, Composer voor PHP en pip voor Python doen dit allemaal voor hun taal, en het meeste wat ze installeren is open source-code die de community vrij deelt.

Het stille voordeel is herhaalbaarheid. Doordat de lijst met packages en versies is vastgelegd, meestal in een lockfile, kan een nieuwe developer een project klonen en binnen een paar minuten precies dezelfde omgeving draaiend hebben. Datzelfde bestand zorgt ervoor dat een buildserver hetzelfde resultaat oplevert als een laptop.

Toch is er een echt risico om te beheren. Elke package die je binnenhaalt is code die je niet zelf hebt geschreven, dus één gecompromitteerde bibliotheek kan alles erachter raken. Goede gewoonte is versies vastzetten, controleren op bekende kwetsbaarheden, en geen dependency toevoegen voor iets wat een paar regels eigen code ook kunnen doen.

Bij TopDevs behandelen we de gegevens van de package manager als onderdeel van de bron van waarheid van een project, zodat het systeem van een klant ook lang na de oorspronkelijke build betrouwbaar te herbouwen is.