Facebooks nye pakke-manager til Javascript skal klare tusindvis af afhængigheder

Facebook blev træt af at arbejde uden om begrænsningerne i npm-klienten og endte med at skabe den nye klient Yarn.

Når man udvikler og vedligeholder systemer, der er afhængige af talrige biblioteker, så bliver det kompliceret at sørge for, at alt fungerer lige præcis som dokumenteret. Facebook oplevede problemer med at bruge klienten til pakke-manageren npm i stor skala, og firmaet er derfor endt med at lave sin egen klient Yarn.

Det skriver Facebooks udviklingsafdeling i et blogindlæg.

Pakker er blevet almindeligt i udvikling med Javascript, fordi projekterne bliver større end blot simple scripts på en enkelt hjemmeside, og så er det ønskværdigt at kunne genbruge kode. Det medfører, at applikationer bliver afhængige af biblioteker, som igen kan være afhængige af andre biblioteker.

Det giver problemer, når man når op på en vis skala, erfarede Facebook, som med frameworket React nåede op på 121.358 filer, som var afhængige af hinanden.

Det gør det besværligt at opdatere og vedligeholde koden. Efter at have fiflet med at få npm til at skalere på en bedre måde, endte Facebook derfor med at lave sin egen pakke-manager, der trækker på det samme repository som npm.

Yarn er Facebooks bud på en ny pakke-manager til npm. Den væsentligste forskel er, at Yarn først gennemløber alle afhængigheder og derefter downloader dét, der skal bruges. Ved hjælp af caching og ved først bagefter at linke tingene sammen, så bliver der ikke spildt tid på at hente de samme pakker flere gange, og man er sikker på, at der hentes de versioner, der skal bruges.

Samtidig kan det ske parallelt, og ifølge Facebook tager processen nu blot få sekunder i forhold til flere minutter. Fordelen er samtidig, at det stadig er det samme repository, komponenterne hentes fra.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Log ind eller Opret konto for at kommentere
IT Company Rank
maximize minimize