Een van de beste eigenschappen van Node zijn pakketbeheerders. Er zijn veel verschillende manieren om knooppuntpakketten te installeren en te beheren. Hier kijken we naar de voor- en nadelen van het gebruik van één pakketbeheerder of het gebruik van meer dan één pakketbeheerder, en enkele van de beste manieren om ze samen te gebruiken.
Wat is een pakketbeheerder vraag je? Lees verder om erachter te komen.
Wat zijn pakketbeheerders?
In de wereld van softwareontwikkeling zijn afhankelijkheden wat u nodig hebt om uw project uit te voeren. Het zijn als ingrediënten in een recept: zonder hen gebeurt er niets.
Als u bijvoorbeeld een app schrijft die JavaScript gebruikt en toegang wil tot bepaalde functies van een bibliotheek genaamd jQuery (die veel websites ooit hebben gebruikt), dan zal jQuery een van uw afhankelijkheden zijn. U moet het hebben geïnstalleerd zodat wanneer iemand uw site bezoekt, ze die coole animaties of interacties kunnen zien die u ermee hebt gemaakt!
Pakketbeheerders helpen deze relaties tussen projecten te beheren door afhankelijkheden voor ons te beheren, zodat we ons geen zorgen hoeven te maken dat we ze elke keer zelf handmatig moeten downloaden. keer dat we iets nieuws willen toevoegen of updaten - ze zorgen er ook voor dat alles goed samenwerkt en soepel verloopt na installatie (wat soms makkelijker gezegd is dan klaar).
Node wordt voorverpakt geleverd met een pakketbeheerder genaamd NPM
NPM is de standaard pakketbeheerder en is als zodanig ingebouwd in de node-runtime. U kunt NPM gebruiken om pakketten van GitHub of NPM direct. U kunt uw pakketten ook op deze site publiceren, zodat anderen ze kunnen installeren met hun versie van NPM.
NPM wordt niet alleen gebruikt voor het installeren van pakketten; het behandelt ook afhankelijkheidsoplossing en versieconflicten tussen twee of meer vereiste bibliotheken of modules in uw toepassingscodebasis.
Dit betekent dat als er meerdere versies zijn van iets als Express draait op uw server NPM zorgt er op elk moment voor dat elke instantie krijgt wat het nodig heeft, zonder daarmee in conflict te komen andere instanties die soortgelijk werk doen - en dat alles zonder dat u iets speciaals hoeft te doen behalve simpelweg roeping vereisen() op een object wanneer dat nodig is!
NPM is een ongelooflijk krachtige tool en het is gemakkelijk om ermee aan de slag te gaan. Maar als Node en JavaScript nieuw voor u zijn, kan het een uitdaging zijn om te weten welke tools beschikbaar zijn voor uw gebruik, en welke het beste zijn voor een bepaald project.
Het grootste probleem met NPM is dat het traag is om pakketten te installeren. Dit is niet erg als je slechts af en toe een script uitvoert, maar het kan ongelooflijk zijn frustrerend als je een hele applicatie probeert te bouwen die gebruik maakt van tientallen verschillende bibliotheken en hulpmiddelen.
Garen en PNPM zijn sneller dan NPM
Garen is een veilig en betrouwbaar alternatief voor NPM dat een vergrendelingsbestand gebruikt om onbedoeld overschrijven te voorkomen en ervoor zorgt dat uw afhankelijkheden correct worden opgelost bij het installeren van pakketten.
Het heeft ook een snellere installatietijd dan NPM, wat het vooral handig maakt als u werkt met grote projecten met veel modules met veel afhankelijkheden.
PNPM is een alternatief voor zowel Yarn als NPM, maar het is nog niet zo populair omdat het sommige van de functies die in geen van beide voorkomen (zoals vergrendelingsbestanden) heeft. De ontwikkelaars beweren echter dat PNPM dankzij zijn lichtgewicht karakter pakketten tot vier keer sneller kan installeren dan Yarn of NPM; dit betekent ook minder schijfruimtegebruik op uw computer!
Als u een project bouwt waarvoor slechts een handvol afhankelijkheden nodig zijn, is Yarn of NPM waarschijnlijk voldoende. Als u echter met grote projecten met veel modules en afhankelijkheden werkt, kan PNPM de betere optie voor u zijn.
Voordelen van het gebruik van meerdere pakketbeheerders
Een enkele pakketbeheerder kan slechts één versie van een bepaalde bibliotheek tegelijk verwerken. Als u twee verschillende versies van dezelfde bibliotheek wilt gebruiken voor andere projecten of in verschillende omgevingen (bijvoorbeeld productie vs. ontwikkeling), dan heb je twee afzonderlijke pakketten nodig die op je systeem zijn geïnstalleerd.
Dit kan tot conflicten leiden als beide pakketten tegelijkertijd hun versie van dezelfde afhankelijkheid proberen bij te werken. Het gebruik van meerdere pakketbeheerders betekent dat u meer controle heeft over welke afhankelijkheden zijn geïnstalleerd en waar dit helpt om dit soort conflicten te voorkomen.
Een ander voordeel is dat wanneer u meerdere pakketbeheerders gebruikt, elk zijn eigen unieke set functies biedt. Sommige zijn misschien sneller dan andere; sommige hebben misschien betere mogelijkheden voor afhankelijkheidsbeheer; andere zijn misschien meer geschikt voor het ontwikkelen van applicaties binnen bepaalde frameworks zoals ReactJS of VueJS enz...
Ten slotte kan het gebruik van meerdere pakketbeheerders de productiviteit van uw ontwikkelaars helpen verbeteren door de tijd te verminderen die wordt besteed aan het zoeken naar en installeren van afhankelijkheden. Dit komt omdat elke pakketbeheerder wordt ontworpen met een specifieke set gebruiksscenario's in gedachten (bijvoorbeeld snelheid vs. beveiliging versus afhankelijkheidsbeheer, enz...).
Gebruik meerdere pakketbeheerders door ze wereldwijd te installeren
Via de opdrachtregel kunt u aangeven welke pakketbeheerder u voor een specifiek project wilt gebruiken. Stel meerdere pakketbeheerders in op uw computer:
- NPM wordt voorverpakt geleverd met Node. Hierdoor kunt u andere pakketten (en pakketbeheerders) vanaf de opdrachtregel installeren en afhankelijkheden in al uw projecten met NPM beheren. Het is ook handig als u NPM-scripts in een browser wilt uitvoeren (bijvoorbeeld Webpack), omdat browsers niet worden geleverd met vooraf geïnstalleerde NPM!
- Installeer Yarn ook wereldwijd met NPM. Dit is een andere populaire optie voor het beheren van afhankelijkheden binnen JavaScript-projecten; het heeft een aantal voordelen ten opzichte van NPM waardoor het de voorkeur verdient voor bepaalde soorten projecten of teams
- Installeer ten slotte PNPM. Deze pakketbeheerder is een vork van NPM die is ontworpen om sneller en stabieler te zijn. Het heeft ook enkele extra functies die handig kunnen zijn voor sommige soorten projecten, zoals ondersteuning voor afhankelijkheden van GitHub.
Houd er rekening mee dat een globale installatie betekent dat het geselecteerde pakket beschikbaar zal zijn voor uw hele systeem (u hebt toegang tot het programma overal via de opdrachtregel), terwijl een lokale installatie alleen toegankelijk is voor het huidige werk map.
Voorbeelden uit de praktijk van hoe u meerdere pakketbeheerders kunt gebruiken
Bekijk deze toepassingen:
1. Garen en NPM kunnen samen worden gebruikt (bijv. maak-reageer-app)
Dit is handig als u wilt profiteren van de snelheid en efficiëntie van Yarn terwijl u toch compatibel blijft met NPM-pakketten. Als je de nieuwste versie nodig hebt van een bibliotheek die nog niet is bijgewerkt voor compatibiliteit met Yarn, of als er een andere reden is waarom uw team liever bij NPM blijft ondanks de lagere snelheid of beperkte functieset, dan zou dit goed kunnen werken voor uw projecteren. Het helpt ook om te voorkomen dat er twee afzonderlijke afhankelijkheidsbomen in uw mono repo-opstelling zijn!
2. Garen gebruiken voor wereldwijde pakketten en PNPM voor lokale installaties
Hoewel PNPM de snelste pakketbeheerder is, kan het lastig zijn om te gebruiken voor wereldwijd geïnstalleerde pakketten. Dit komt omdat het een andere bestandsstructuur gebruikt, wat compatibiliteitsproblemen kan veroorzaken met programma's zoals Visual Studio Code. Hier komt garen om de hoek kijken. U kunt het gebruiken voor uw wereldwijd geïnstalleerde pakketten en PNPM voor lokale installaties. Deze oplossing is een goede manier om de voordelen van beide pakketbeheerders te benutten zonder uw workflow al te veel te hoeven veranderen. Met deze opzet kun je - als je wild wilt worden - NPM volledig van je systeem verwijderen (maar het is altijd fijn om NPM als back-up te hebben).
3. PNPM gebruiken met NPM als terugval
Dit is een goede optie om te overwegen als u PNPM wilt gebruiken, maar niet wilt dat al uw ontwikkelaars een nieuwe tool moeten leren. Hierdoor kunnen ze met NPM blijven werken totdat ze vertrouwd zijn met PNPM en het nodig hebben voor hun werk.
Het gebruik van meerdere pakketbeheerders maakt het gemakkelijker
U kunt meerdere pakketbeheerders gebruiken. U kunt ze globaal of lokaal installeren, en als u wilt specificeren welke pakketbeheerder voor een specifiek project moet worden gebruikt, gebruikt u gewoon de opdrachtregel!
Als u meerdere pakketbeheerders op uw systeem wilt installeren, zorg er dan voor dat u dezelfde versie van Node.js gebruikt.
Concluderend denken we dat u meer dan één pakketbeheerder moet gebruiken. Het is een geweldige manier om aan de slag te gaan met Node en ook om wat nieuwe tools te leren als je al bekend bent met NPM. Als u Node nog niet hebt geïnstalleerd, is de installatie eenvoudig in Windows.