En av de bästa funktionerna i Node är pakethanterare. Det finns många olika sätt att installera och hantera nodpaket. Här kommer vi att titta på för- och nackdelar med att använda en pakethanterare eller använda mer än en pakethanterare, och några av de bästa sätten att använda dem tillsammans.
Vad är en pakethanterare frågar du? Läs vidare för att ta reda på det.
Vad är pakethanterare?
I en värld av mjukvaruutveckling är beroenden vad du behöver för att driva ditt projekt. De är som ingredienser i ett recept: utan dem händer ingenting.
Till exempel, om du skriver en app som använder JavaScript, och den vill ha tillgång till vissa funktioner från ett bibliotek som heter jQuery (som många webbplatser en gång använde), då kommer jQuery att vara ett av dina beroenden. Du behöver det installerat så att när någon besöker din webbplats kan de se de coola animationerna eller interaktionerna som du har skapat med den!
Pakethanterare hjälper till att hantera dessa relationer mellan projekt genom att hantera beroenden åt oss, så vi behöver inte oroa oss för att manuellt ladda ner dem själva varje gång vi vill ha något nytt lagt till eller uppdaterat – de ser också till att allt fungerar korrekt och fungerar smidigt när det väl har installerats (vilket ibland är lättare sagt än Gjort).
Noden levereras förpackad med en pakethanterare som heter NPM
NPM är standardpakethanteraren, och som sådan är den inbyggd i nodens körtid. Du kan använda NPM för att installera paket från GitHub eller NPM direkt. Du kan också publicera dina paket på den här webbplatsen så att andra kan installera dem med deras version av NPM.
NPM används inte bara för att installera paket; den hanterar också beroendelösning och versionskonflikter mellan två eller flera nödvändiga bibliotek eller moduler i din applikationskodbas.
Detta betyder att om det finns flera versioner av något liknande Express körs på din server vid varje given tidpunkt kommer NPM att se till att varje instans får vad den behöver utan att komma i konflikt med andra instanser som gör liknande arbete - och allt utan att du behöver göra något speciellt utöver helt enkelt kallelse behöva() på ett föremål när det behövs!
NPM är ett otroligt kraftfullt verktyg och det är lätt att komma igång med det. Men om du är ny på Node och JavaScript kan det vara utmanande att veta vilka verktyg som finns tillgängliga för din användning – och vilka som är bäst för ett givet projekt.
Det största problemet med NPM är att det går långsamt att installera paket. Det här är inte en stor affär om du bara kör ett och annat manus eller två, men det kan vara otroligt frustrerande om du försöker bygga en hel applikation som använder dussintals olika bibliotek och verktyg.
Garn och PNPM är snabbare än NPM
Garn är ett säkert och pålitligt alternativ till NPM som använder en låsfil för att förhindra oavsiktliga överskrivningar och säkerställer att dina beroenden löses korrekt när du installerar paket.
Den har också en snabbare installationstid än NPM, vilket gör den särskilt användbar om du arbetar med stora projekt som har många moduler med många beroenden.
PNPM är ett alternativ till både Yarn och NPM, men det är inte riktigt lika populärt än eftersom det inte har några av funktionerna som finns i någon av dem (som låsfiler). Dess utvecklare hävdar dock att PNPM kan installera paket upp till fyra gånger snabbare än Yarn eller NPM tack vare dess lätta natur; detta innebär mindre diskutrymmesanvändning på din dator också!
Om du bygger ett projekt som bara kräver en handfull beroenden kommer garn eller NPM förmodligen att räcka. Men om du arbetar med stora projekt med många moduler och beroenden kan PNPM vara det bättre alternativet för dig.
Fördelar med att använda flera pakethanterare
En enda pakethanterare kan bara hantera en version av ett givet bibliotek åt gången. Om du vill använda två olika versioner av samma bibliotek för andra projekt eller i olika miljöer (till exempel produktion vs. utveckling), då behöver du två separata paket installerade på ditt system.
Detta kan leda till konflikter om båda paketen försöker uppdatera sin version av samma beroende samtidigt. Att använda flera pakethanterare innebär att du har mer kontroll över vilka beroenden som är installerade och var vilket hjälper till att undvika den här typen av konflikter.
En annan fördel är att när du använder flera pakethanterare kommer var och en att tillhandahålla sin egen unika uppsättning funktioner. Vissa kan vara snabbare än andra; vissa kan ha bättre förmåga att hantera beroenden; andra kan vara mer lämpade för att utveckla applikationer inom vissa ramar som ReactJS eller VueJS etc...
Slutligen kan användning av flera pakethanterare hjälpa till att förbättra din utvecklarproduktivitet genom att minska tiden som ägnas åt att söka efter och installera beroenden. Detta beror på att varje pakethanterare kommer att utformas med en specifik uppsättning användningsfall i åtanke (till exempel hastighet vs. säkerhet vs. beroendehantering, etc...).
Använd flera pakethanterare genom att installera dem globalt
Med hjälp av kommandoraden kan du ange vilken pakethanterare du vill använda för ett specifikt projekt. Ställ in flera pakethanterare på din dator:
- NPM kommer färdigförpackad med Node. Detta gör att du kan installera andra paket (och pakethanterare) från kommandoraden och hantera beroenden över alla dina projekt med NPM. Det är också användbart om du vill köra NPM-skript i en webbläsare (t.ex. Webpack), eftersom webbläsare inte kommer med NPM förinstallerat!
- Installera Yarn globalt också med NPM. Detta är ett annat populärt alternativ för att hantera beroenden inom JavaScript-projekt; det har vissa fördelar jämfört med NPM som kan göra det att föredra för vissa typer av projekt eller team
- Slutligen, installera PNPM. Denna pakethanterare är en gaffel av NPM som är designad för att vara snabbare och mer stabil. Den har också några ytterligare funktioner som kan vara användbara för vissa typer av projekt, till exempel stöd för beroenden från GitHub.
Observera att en global installation innebär att det valda paketet kommer att vara tillgängligt för hela ditt system (du kan komma åt programmet var som helst via kommandoraden), medan en lokal installation endast kan nås av den nuvarande arbetande katalog.
Verkliga exempel på hur du kan använda flera pakethanterare
Kolla in dessa användningsområden:
1. Garn och NPM kan användas tillsammans (t.ex. skapa-reagera-app)
Detta är användbart när du vill dra fördel av hastigheten och effektiviteten hos Yarn samtidigt som du behåller kompatibiliteten med NPM-paket. Om du behöver den senaste versionen av ett bibliotek som inte har uppdaterats för kompatibilitet med Yarn ännu, eller om det finns en annan anledning varför ditt team hellre skulle hålla fast vid NPM trots dess lägre hastighet eller begränsade funktionsuppsättning, då kan detta fungera bra för dig projekt. Det hjälper också till att undvika att ha två separata beroendeträd i din mono-repo-inställning!
2. Använda garn för globala paket och PNPM för lokala installationer
Medan PNPM är den snabbaste pakethanteraren kan det vara svårt att använda för globalt installerade paket. Detta beror på att den använder en annan filstruktur som kan orsaka kompatibilitetsproblem med program som Visual Studio Code. Det är här Yarn kommer in. Du kan använda det för dina globalt installerade paket och PNPM för lokala installationer. Denna lösning är ett bra sätt att få fördelarna med båda pakethanterarna utan att behöva ändra ditt arbetsflöde för mycket. Med den här inställningen – om du vill bli vild – kan du ta bort NPM från ditt system helt (men det är alltid trevligt att ha NPM som backup).
3. Använda PNPM Med NPM som reserv
Detta är ett bra alternativ att överväga om du vill använda PNPM, men inte vill att alla dina utvecklare ska behöva lära sig ett nytt verktyg ännu. Det tillåter dem att fortsätta arbeta med NPM tills de är bekväma med PNPM och behöver det för sitt arbete.
Att använda flera pakethanterare gör det enklare
Du kan använda flera pakethanterare. Du kan installera dem globalt eller lokalt, och om du vill specificera vilken pakethanterare som ska användas för ett specifikt projekt, använd bara kommandoraden!
Om du vill installera flera pakethanterare på ditt system, se till att du använder samma version av Node.js.
Sammanfattningsvis tycker vi att du bör använda mer än en pakethanterare. Det är ett bra sätt att komma igång med Node och även lära dig några nya verktyg om du redan är bekant med NPM. Om du inte redan har Node installerad är installationen enkel på Windows.