En av de beste funksjonene til Node er pakkeadministratorer. Det er mange forskjellige måter å installere og administrere nodepakker på. Her skal vi se på fordeler og ulemper ved å bruke én pakkebehandler eller bruke mer enn én pakkebehandler, og noen av de beste måtene å bruke dem sammen.
Hva er en pakkebehandler spør du? Les videre for å finne ut.
Hva er pakkeforvaltere?
I en verden av programvareutvikling er avhengigheter det du trenger for å kjøre prosjektet ditt. De er som ingredienser i en oppskrift: uten dem skjer ingenting.
For eksempel, hvis du skriver en app som bruker JavaScript, og den vil ha tilgang til noen funksjoner fra et bibliotek kalt jQuery (som mange nettsteder en gang brukte), så vil jQuery være en av dine avhengigheter. Du trenger det installert slik at når noen besøker nettstedet ditt, kan de se de kule animasjonene eller interaksjonene du har laget med det!
Pakkeadministratorer hjelper til med å administrere disse relasjonene mellom prosjekter ved å administrere avhengigheter for oss, slik at vi ikke trenger å bekymre oss for å laste dem ned manuelt hver gang vi vil ha noe nytt lagt til eller oppdatert – de sørger også for at alt fungerer som det skal og går jevnt når det er installert (noe som noen ganger er lettere sagt enn ferdig).
Node leveres ferdigpakket med en pakkebehandler kalt NPM
NPM er standard pakkebehandling, og som sådan er den innebygd i noden kjøretid. Du kan bruke NPM til å installere pakker fra GitHub eller NPM direkte. Du kan også publisere pakkene dine på dette nettstedet slik at andre kan installere dem ved å bruke deres versjon av NPM.
NPM brukes ikke bare til å installere pakker; den håndterer også avhengighetsløsning og versjonskonflikter mellom to eller flere nødvendige biblioteker eller moduler i applikasjonskodebasen.
Dette betyr at hvis det er flere versjoner av noe sånt Express kjører på serveren din til enhver tid vil NPM sørge for at hver instans får det den trenger uten å komme i konflikt med andre tilfeller som gjør lignende arbeid - og alt uten at du trenger å gjøre noe spesielt utover bare ringer krever() på en gjenstand ved behov!
NPM er et utrolig kraftig verktøy, og det er enkelt å komme i gang med det. Men hvis du er ny på Node og JavaScript, kan det være utfordrende å vite hvilke verktøy som er tilgjengelige for din bruk – og hvilke som er best for et gitt prosjekt.
Hovedproblemet med NPM er at det er tregt å installere pakker. Dette er ikke en stor avtale hvis du bare kjører et og annet manus eller to, men det kan være utrolig frustrerende hvis du prøver å bygge en hel applikasjon som bruker dusinvis av forskjellige biblioteker og verktøy.
Garn og PNPM er raskere enn NPM
Garn er et sikkert og pålitelig alternativ til NPM som bruker en låsefil for å forhindre utilsiktede overskrivinger og sikrer at avhengighetene dine løses riktig når du installerer pakker.
Den har også en raskere installasjonstid enn NPM, noe som gjør den spesielt nyttig hvis du jobber med store prosjekter som har mange moduler med mange avhengigheter.
PNPM er et alternativ til både Yarn og NPM, men det er ikke fullt så populært ennå fordi det ikke har noen av funksjonene som finnes i noen av dem (som låsefiler). Utviklerne hevder imidlertid at PNPM kan installere pakker opptil fire ganger raskere enn Yarn eller NPM takket være dens lette natur; dette betyr mindre diskplassbruk på datamaskinen din også!
Hvis du bygger et prosjekt som bare krever en håndfull avhengigheter, vil garn eller NPM sannsynligvis være tilstrekkelig. Men hvis du jobber med store prosjekter med mange moduler og avhengigheter, kan PNPM være det bedre alternativet for deg.
Fordeler med å bruke flere pakkeadministratorer
En enkelt pakkebehandling kan bare håndtere én versjon av et gitt bibliotek om gangen. Hvis du vil bruke to forskjellige versjoner av det samme biblioteket for andre prosjekter eller i forskjellige miljøer (for eksempel produksjon vs. utvikling), så trenger du to separate pakker installert på systemet ditt.
Dette kan føre til konflikter hvis begge pakkene prøver å oppdatere sin versjon av samme avhengighet samtidig. Å bruke flere pakkebehandlere betyr at du har mer kontroll over hvilke avhengigheter som er installert og hvor som bidrar til å unngå slike konflikter.
En annen fordel er at når du bruker flere pakkebehandlere, vil hver enkelt gi sitt eget unike sett med funksjoner. Noen kan være raskere enn andre; noen kan ha bedre avhengighetsstyringsevner; andre kan være mer egnet for å utvikle applikasjoner innenfor visse rammer som ReactJS eller VueJS osv...
Til slutt kan bruk av flere pakkeadministratorer bidra til å forbedre utviklerproduktiviteten ved å redusere tiden brukt på å søke etter og installere avhengigheter. Dette er fordi hver pakkebehandling vil bli utformet med et spesifikt sett med brukstilfeller i tankene (for eksempel hastighet vs. sikkerhet vs. avhengighetshåndtering, etc...).
Bruk flere pakkeadministratorer ved å installere dem globalt
Ved hjelp av kommandolinjen kan du spesifisere hvilken pakkebehandling du vil bruke for et spesifikt prosjekt. Sett opp flere pakkeadministratorer på maskinen din:
- NPM kommer ferdigpakket med Node. Dette vil tillate deg å installere andre pakker (og pakkebehandlere) fra kommandolinjen og administrere avhengigheter på tvers av alle prosjektene dine med NPM. Det er også nyttig hvis du vil kjøre NPM-skript i en nettleser (f.eks. Webpack), fordi nettlesere ikke kommer med NPM forhåndsinstallert!
- Installer Yarn globalt også ved å bruke NPM. Dette er et annet populært alternativ for å administrere avhengigheter i JavaScript-prosjekter; det har noen fordeler fremfor NPM som kan gjøre det å foretrekke for visse typer prosjekter eller team
- Til slutt, installer PNPM. Denne pakkebehandleren er en gaffel av NPM som er designet for å være raskere og mer stabil. Den har også noen tilleggsfunksjoner som kan være nyttige for noen typer prosjekter, for eksempel støtte for avhengigheter fra GitHub.
Merk at en global installasjon betyr at den valgte pakken vil være tilgjengelig for hele systemet ditt (du har tilgang programmet hvor som helst via kommandolinjen), mens en lokal installasjon bare kan nås av gjeldende arbeid katalog.
Eksempler fra den virkelige verden på hvordan du kan bruke flere pakkeadministratorer
Sjekk ut disse bruksområdene:
1. Garn og NPM kan brukes sammen (f.eks. lag-reager-app)
Dette er nyttig når du vil dra nytte av hastigheten og effektiviteten til Yarn samtidig som du beholder kompatibiliteten med NPM-pakker. Hvis du trenger den nyeste versjonen av et bibliotek som ikke er oppdatert for kompatibilitet med Yarn ennå, eller hvis det er en annen grunn hvorfor teamet ditt heller vil holde seg til NPM til tross for dets lavere hastighet eller begrensede funksjonssett, så kan dette fungere bra for deg prosjekt. Det hjelper også å unngå å ha to separate avhengighetstrær i mono-repo-oppsettet ditt!
2. Bruke garn for globale pakker og PNPM for lokale installasjoner
Mens PNPM er den raskeste pakkebehandleren, kan den være vanskelig å bruke for globalt installerte pakker. Dette er fordi den bruker en annen filstruktur som kan forårsake kompatibilitetsproblemer med programmer som Visual Studio Code. Det er her Garn kommer inn. Du kan bruke den for dine globalt installerte pakker, og PNPM for lokale installasjoner. Denne løsningen er en god måte å få fordelene med begge pakkeforvalterne uten å måtte endre arbeidsflyten for mye. Med dette oppsettet – hvis du vil bli vill – kan du fjerne NPM fra systemet fullstendig (men det er alltid kjekt å ha NPM som backup).
3. Bruke PNPM Med NPM som reserve
Dette er et godt alternativ å vurdere i tilfelle du vil bruke PNPM, men ikke vil at alle utviklerne dine må lære et nytt verktøy ennå. Det lar dem fortsette å jobbe med NPM til de er komfortable med PNPM og trenger det for arbeidet sitt.
Å bruke flere pakkeadministratorer gjør ting enklere
Du kan bruke flere pakkebehandlere. Du kan installere dem globalt eller lokalt, og hvis du vil spesifisere hvilken pakkebehandling som skal brukes for et spesifikt prosjekt, bruk bare kommandolinjen!
Hvis du vil installere flere pakkebehandlere på systemet ditt, sørg for at du bruker samme versjon av Node.js.
Avslutningsvis tenker vi at du bør bruke mer enn én pakkebehandler. Det er en fin måte å komme i gang med Node og også lære noen nye verktøy hvis du allerede er kjent med NPM. Hvis du ikke allerede har Node installert, er oppsettet enkelt på Windows.