Varför använda Yarn som pakethanterare?

Varför skall man använda Yarn som pakethanterare?

Yarn skapades av Facebooks utvecklare då de ansåg att npm hade en del brister. Npm och Yarn är båda pakethanterare för JavaScript och de uppfyller nästan samma funktion. Trots stora likheter, då Yarn är byggt på npm, så finns det en del som skiljer dem åt.

Prestandan är enligt Yarns skapare ett av de stora problemen med npm. Enligt tester är Yarns medelhastighet ungefär 4,7 gånger snabbare än npm 4. Efter npms uppdatering till version 5 är racet mycket närmare men Yarn har fortfarande övertaget, tack vare att Yarn kör parallella installationer medan npm installerar paket för paket sekventiellt. Yarn använder också sig av låsfiler som ser om dina paket redan är installerade och om dina paket har rätt version. Detta löser problemet med “it works on my machine”. Yarn sparar även alla installerade paket lokalt vilket gör att det inte kräver en internetanslutning vid nästa installation då det installerar paketet direkt från hårddisken.

Ett välkänt problem med npm var att olika användare kan ha olika paketversioner trots samma package.json-fil. Som nämnt tidigare har Yarn löst detta genom skapa lås-filer som låser paketens version och de garanterar därför att man får en exakt likadan node_modules struktur oavsett operativsystem eller annat som kan påverka. Yarn har även förbättrat kodsäkerheten vid installation av paket. Vid varje installation kontrolleras koden med checksums innan den körs för att upptäcka eventuella fel.

I npms version 5 lades det till liksom i Yarn en låsfil som standard när man kör installationer av paket i ditt projekt. Målet med npms låsfil är detsamma som Yarns: att få en likadan node_modules struktur, trots tidigare problem med att låsfilen baserades på vilka paket som installerats vilket gjorde att “optionalDependencies” inte alltid kom med i låsfilen. Detta har dock fixats i den senaste versionen av npm (5.6) och funkar nu likvärdigt med Yarns låsfil.

Eftersom att Yarn är byggt ovanpå npm så är i princip alla npm-paket kompatibla. Det verkar dock vara problem med ett fåtal paket som då istället får installeras via npm. Trots att Yarn är nyare och därför mindre beprövat så är Yarn ett väldigt bra alternativ.

Npm och Yarn är båda bra pakethanterare, men eftersom Yarn kan göra allt som npm kan och därtill har en större kodsäkerhet i paketen som sparas och dessutom gör jobbet snabbare, så har Yarn ett betydande övertag.

https://www.npmjs.com
https://yarnpkg.com/lang/en