kontakta oss

Vad är NPM? Och vad är garn?
NPM och garn är två av de mest populära pakethanterarna bland JavaScript- och Node.js utvecklare. De gör det lättare att hantera ett projekts beroenden, dvs allt som ett projekt förlitar sig på, eller en kod som är nödvändig för att det ska fungera korrekt. Vi behöver dem eftersom att upprätthålla projektets beroenden är en utmanande uppgift som kräver att vi installerar, avinstallerar, modifierar eller uppgraderar dem.
Låt den här artikeln hjälpa dig att förstå vad exakt pakethanterare är, hur Garn vs NPM Jämför med varandra och vilka funktioner Gör arbetet med det ena bättre än det andra.
Pakethanterare eller Pakethanteringssystem är samlingar av verktyg som hjälper dig att installera, ta bort, ändra, uppgradera och konfigurera datorprogram, samt granska beroenden och rapportera vilka som ska uppgraderas för att minska potentiella sårbarheter.
I dagens värld förlitar sig utvecklare på paketerad programvara, vilket innebär att programvaran kommer i en enda fil som packar upp allt som behövs för att programvaran ska fungera på vårt system. Om inte allt, innehåller det åtminstone referenser till var systemet kan få den information det behöver.
För att berätta för ett pakethanteringssystem hur man hanterar vad som finns inuti, innehåller paketen:
Skript och metadata svarar till exempel på frågor som:
All information som behövs för att svara på dessa frågor är paketerat i ett paket, som Garn vs NPM. Låt oss nu titta på var och en av dessa pakethanterare.
NPM (Node Package Manager) är standardkommandoradsverktyget för installera Node.js beroenden och en offentlig databas med JavaScript-paket, Förvärvet nyligen av Microsoft. Det representerar ingångspunkten i ekosystemet för JavaScript-moduler med öppen källkod och verktygen kring att arbeta med och hantera dessa moduler.
Det används ofta för att publicera, lokalisera, installera och utveckla Node-program och applikationer. För det använder den flera olika komponenter:
Den NPM-registret är en viktig del av Node Package Manager-ekosystemet. Dess programvaruregister är en offentlig databas av JavaScript-kod, verktyg, bibliotek och ramverk tillgängliga att ladda ner och använda i dina applikationer.
Detta register är det största programvaruregistret på internet, med för närvarande nästan 1 miljon paket tillgängliga online. Vem som helst kan fritt distribuera sina JavaScript-moduler genom att publicera dem som paket på NPM. Registret är kärnan och förbinder miljontals utvecklare över hela världen med de paket och verktyg de behöver för att få arbetet gjort.
Istället för att skriva din ansökan helt från grunden kan du använda moduler publicerade av Node Package Manager för att hjälpa dig i din utvecklingsprocess. Till exempel är Express.js det mest populära serverramverket för Node.js - du kan ladda ner det från NPM och ha en server som körs i bara några rader kod.
Denna tillgänglighet av återanvändbara moduler hjälper till att påskynda Node.js utveckling avsevärt genom att minska mängden applikationsspecifik kod du måste skriva.
Med den otroliga volymen paket som finns i registret kan det vara utmanande att hitta rätt för att lösa ditt problem. Men det är här NPM: Hemsida kommer till nytta.
<a href="www.npmjs.com”; target="_blank">npmjs.com är webbgränssnittet till Node Package Manager-registret. Det är den centrala platsen att söka igenom alla tillgängliga offentliga paket i NPM-ekosystemet.
Varje paket i registret har sin egen sida på Node Package Manager-webbplatsen. Du kan visa paketinformation, användningsstatistik, länkar till paketförvaret, problemspårare och andra metadata om varje paket. Denna information är till stor hjälp när du bestämmer dig för ett paket för din ansökan.
Eftersom vem som helst kan publicera till NPM-registret finns det ingen kvalitetsgaranti för ett visst paket. Så, när det är möjligt, föreslår vi dig Välj ett populärt, aktivt underhållet paket som fokuserar på det problem du försöker lösa mer specifikt.
Ta en titt på listan över paket som finns tillgängliga på npmjs.com
Den NPM kommandorad (CLI) verktyget är standardpakethanteraren som medföljer Node.js. Det hjälper dig installera och hantera beroenden. Det ansvarar för att hämta paket från registret och installera dem i din node_moduler katalog, där de är tillgängliga från din kod.
Det kommer också uppdatera beroenden listning i din paket.json fil när du installerar nya beroenden, vilket är viktigt.
Det är viktigt att nämna att CLI är användbar utöver att installera beroenden. Det är med dig under alla stadier av utvecklingscykeln, hjälper dig skapa, köra, hantera och dela Node.js paket och program. Det finns många kommandon tillgängliga, men här är några av de viktigaste:
npm installera - Hjälper dig att installera beroenden.npm start - Används för att generera en paket.json fil.npm-granskning - Ber om en rapport om kända sårbarheter.npm uppdatering - Hjälper dig att uppdatera de installerade versionerna av dina beroenden.npm avinstallera - Tar bort beroenden från båda paket.json och node_moduler katalog.npm körning - Hjälper dig att köra skript som är inställda i din paket.json.npm start - Kör projektets startskript.npm publicera - Publicerar ditt paket till NPM-registret.
NPM Incorporated, företaget ansvarar för att vara värd för och underhålla NPM-registret och npmjs.com.
Node Package Manager började som ett open source-program skapat 2009. Sedan dess har det vuxit väsentligt. 2014 grundades NPM Inc. för att stödja Node Package Manager-registret som en hållbar gratis tjänst.
Företagets huvudsakliga vinstdrivande produkt erbjuder privata publiceringspaket till NPM-registret för internt bruk av företag, team och företagsföretag. Ett betalt konto är dock rent valfritt, och det är fortfarande en gratis tjänst som du inte behöver registrera dig för.
Som redan nämnts är NPM-registret en kritisk del av JavaScrip-ekosystemet, och det är viktigt att förstå vem som ansvarar för det ekosystemet. För närvarande är det NPM Inc., eftersom de kontrollera registret och fatta beslut om dess framtid.
Läs också:
Yarn är ett JavaScript-paket och beroendehanterare Byggd av Facebook 2016 och stöds av Google, Exponent och Tilde. Det skapades för att ta itu med bristerna i äldre versioner av NPM CLI och det fick snabbt uppmärksamhet och stöd från en stor öppen källkodsgemenskap.
Idag är Garn ett populärt alternativ till npm eftersom det är snabbt och enkelt att använda.
Som NPM, Garn låter dig använda och dela kod med andra utvecklare över hela världen, så du behöver inte uppfinna hjulet på nytt, dvs du kan använda kod som andra utvecklare har skrivit och publicerat. Detta gör det lättare för dig att bygga programvara genom att låta dig använda andra utvecklares svar på specifika problem.
Eftersom Yarn är byggt ovanpå NPMs register finns paket som publiceras här också tillgängliga på Yarn, vilket hjälper till en sömlös uppgradering.
Rollen för pakethanterare som Garn är för att låta dig installera funktioner snabbt och säkert; Detta görs också via kommandoradsinstruktioner.
När en funktion läggs till hämtar den nödvändig kod från ett arkiv och lägger till den i projektet, samt lägger till nödvändiga referenser om paketet behöver andra bibliotek som ett beroende för att fungera korrekt.
Yarn är därför en pakethanterare som installerar, ändrar och tar bort funktioner i webbprogram. Det är också ett verktyg med öppen källkod som framkom till förbättra vissa problem som Node Package Manager presenterar, som långsamheten och omöjligheten att installera paket offline.
En speciell egenskap hos Yarns arkitektur är sättet att installera paketen, vilket görs i tre distinkta steg:
node_moduler ”eller”.garn ”mapp, beroende på version (Garn 2, som vi kommer att täcka inom kort), och uppdateras i Garnkontrollfilerna.
Eftersom Yarn ger dig tillgång till samma paket som Node Package Manager, är dess beroendekommandon mycket lika:
garnlägg - Lägger till ett paket till ditt befintliga paket. Garn Init - Startar paketutvecklingsprocessen.garninstallation - Installerar alla paketets beroenden i paket.json filgarnpublicera - Skickar ett paket till pakethanteringssystemet.garnet ta bort - Tar bort ett onödigt paket från det aktuella paketet.
Garn 4 förlänger ytterligare det imponerande innovationsspåret för Garnpakethanteraren. Den här versionen erbjuder en mängd förbättringar jämfört med sin föregångare och introducerar nya funktioner, till exempel en strömlinjeformad installationsprocess med Plug'n'Play som går ett steg längre.
Här är de spännande aspekterna av Garn 4:
Här är en tabell som ger en snabb referens för utvecklare att förstå motsvarande kommandon mellan npm och garn för olika uppgifter:
Garnversion 1 och NPM hanterar båda beroenden på liknande sätt. De behåller metadata i paket.json fil, som lagras i underkatalogen - node_moduler.
Garn spårar inte längre beroenden i underkatalogen nodmoduler från och med version 2. Garn 2.0, å andra sidan, använder Plug'n'Play funktionalitet, som skapar en enda .pnp.cjs fil. Den här filen visar ett diagram över ett projekts beroendehierarki.
Garn installerar beroenden med hjälp av garn kommando. Det installerar beroenden samtidigt, dvs parallellt, så att du kan lägga till flera filer samtidigt. När du installerar beroenden skapas en låsfil som lagrar den exakta listan över beroenden som används. Denna fil är känd som garn.lock .
Node Package Manager installerar beroenden en efter en genom npm installera kommando.
Det producerar också en paket-lock.json versionslåsfil. Denna fil stöds också av Yarn, så att användare kan flytta versionsdata från Node Package Manager till Yarn.
När du laddar ner paket, Garn gör en säkerhetskontroll i bakgrunden. Den använder paketlicensinformationen för att undvika att ladda ner farliga skript eller orsaka beroendeproblem.
För att säkerställa ett säkert dataflöde använder båda krypteringstekniker. Garn validerar paket med kontrollsummor, medan NPM använder paket-lock.json filens SHA-512 (Secure Hash Algorithm).
I sina tidigare versioner var säkerhetsfrågor ett stort problem. Nu, varje gång du installerar ett paket, den gör en säkerhetsbedömning från och med version 6. Detta hjälper till Undvik sårbarheter och försäkrar att inga beroenden är inkompatibla.
Den npm-granskning kommandot kan också användas för att göra en manuell granskning. Om det upptäcker några sårbarheter, använd npm-granskningsfix för att reparera problemen.
Båda pakethanterarna delar flera grundläggande funktioner:
garn.lock i garn och paket-lock.json i NPM.npx kommandot i NPM och garn dlx kommando i Yarn kan du köra skript på distans i både NPM och Yarn.
Som redan nämnts ovan inkluderar Garns unika egenskaper:
.pnp.cjs fil som mappar projektberoenden istället för att använda mappen nodmoduler. Detta resulterar i mer strömlinjeformade beroendeträd och snabbare projektstart och paketinstallation..pnp.cjs fil för att kartlägga paket lagrade i offline-cachen. Detta gör att du snabbt kan hämta och installera paket som har sparats.
Som tidigare nämnts, Yarn installerar beroendepaket parallellt, medan Node Package Manager installerar dem i följd. Som ett resultat, Garn överträffar när du installerar större filer.
Båda verktygen kan spara beroende filer till offline-cachen. Detta gör det möjligt för användare att installera beroenden även när de är inte ansluten till internet.
Garn använder också Noll installation funktionalitet som börjar med version 2. Denna funktionalitet utnyttjar beroendekartan från .pnp.cjs fil för att göra en offline-beroendeinstallation med noll förseningar.
Läs också:
Vad är den bästa pakethanteraren att använda för dina projekt? Fram till 2024 fortsätter de två populära utmanarna att vara npm, Node.js: s ursprungliga pakethanterare, och Garn, det nya barnet på kvarteret. Båda har anmärkningsvärda styrkor och vissa områden som behöver poleras. Så frågan handlar om detta - ska du välja Garn eller npm 2024?
Om hastighet och deterministiska beroenden spelar roll för dig, är Garn det bästa alternativet. Yarn populariserade låsfiler, vilket säkerställer att samma versioner av beroenden installeras över olika system, och byggdes ursprungligen för att vara snabbare, vilket det fortfarande är idag. Deras avancerade stöd för monorepo via arbetsytor är utformat för att förenkla orkestreringen av monorepo-paket och beroenden.
Plus:
Nackdelar:
npm har kommit ikapp Garn imponerande. Med de betydande förbättringarna som påverkas av Yarns modell tillhandahåller npm CLI en låsfil (package-lock.json) för deterministiska installationer och gör ett anmärkningsvärt jobb med sin övergripande funktionalitet. Dessutom får säkerheten mer fokus med funktioner som automatiska varningar för sårbara beroenden och npm audit fix. Dessutom är npm-kommandon i allmänhet mer intuitiva och lättare att komma ihåg.
Plus:
Nackdelar:
Beslutet handlar om vad du värdesätter mest och vad som passar bäst med dina projektkrav. Snabbhet och effektiv hantering av monorepos lutar vågen till Garns fördel. Omvänt är npm ditt val om du letar efter stabilitet, ett robust ekosystem och en enklare kommandostruktur. Hur som helst kommer både npm och Yarn med enorma fördelar som är värda att överväga, vilket säkerställer att din utvecklingsprocess 2024 blir både effektiv och trevlig.
Med tanke på skillnaderna och funktionerna som täcks mellan Garn och NPM, det senare är att föredra för utvecklare som är bekanta med och nöjda med dess nuvarande arbetsflöde. Det erbjuder en anständig användarupplevelse samtidigt som det sparar hårddiskutrymme.
Garn har mer komplexa komponenter som Plug'n'Play och Zero installation genom Yarn 2. Det också förbättrar prestanda och säkerhet, men på bekostnad av hårddiskkapacitet.
Som vi kan se används båda teknikerna på liknande sätt, så du borde analysera prioriteringen av ditt projekt och dina preferenser när man väljer mellan de två.
Kom ihåg att (hittills) båda är kompatibla, vilket innebär att du kan byta mellan de två med lämpliga inställningar under utvecklingen av ett projekt om du behöver.


Mångsidig och datadriven tillväxtmarknadsförare med fördjupad affärskunskap, uppdaterad med den senaste utvecklingen inom det digitala marknadsföringslandskapet.

Din dagliga webbutvecklare som gillar att gömma sig i backend. Javascript och Ruby är min sylt. Jag fumlar fortfarande med Docker och mina byggnader går sönder ganska ofta.
Människor som läste det här inlägget tyckte också att dessa var intressanta: