Hjem » Siste artikler » Slik får du mest ut av pnpm i hverdagsprosjekter med Node og front-end

Slik får du mest ut av pnpm i hverdagsprosjekter med Node og front-end

Hovedillustrasjon
Hovedillustrasjon. Foto: Mohammad Rahmani / Unsplash.

Mange prosjekter med Node og front-end drukner i tunge node_modules-mapper, trege installasjoner og uklare avhengigheter. Hvis du har kjent på dette, kan pnpm være et nyttig alternativ til npm og Yarn.

I denne artikkelen ser vi på hvordan pnpm fungerer, hvordan du tar det i bruk uten dramatikk, og hvilke fallgruver du bør unngå i ekte prosjekter med team, CI og monorepo.

Hva er pnpm, og hvorfor bry seg?

pnpm er en pakkebehandler for Node-økosystemet som fokuserer på hastighet og plassbesparelse. I stedet for å kopiere alle avhengigheter inn i hvert prosjekt, lagres pakkene én gang i en delt cache og lenkes inn der de trengs.

Det gir to konkrete gevinster: raskere installasjoner når du jobber med flere prosjekter, og langt mindre diskbruk. I tillegg får du et mer forutsigbart node_modules-oppsett, som gjør det lettere å fange feil i avhengigheter og peer dependencies.

Slik kommer du i gang med pnpm

For å bruke pnpm trenger du Node installert. Selve pnpm kan installeres på flere måter, for eksempel via corepack i nyere Node-versjoner eller globalt med npm. Sjekk gjerne offisiell dokumentasjon for kommandoer, siden installasjonsmetoder kan endre seg over tid.

Når pnpm er på plass, kan du kjøre de samme kommandoene du er vant til fra npm, bare med pnpm i stedet for npm. Typiske kommandoer er pnpm install, pnpm add <pakke> og pnpm run <script>.

Konvertering av et eksisterende prosjekt

Overgangen fra npm eller Yarn til pnpm kan være veldig rett frem. Start med å slette node_modules-mappen og package-lock.json eller yarn.lock, avhengig av hva du har brukt tidligere.

Deretter kjører du pnpm install i prosjektet. Dette oppretter en pnpm-lock.yaml og bygger node_modules på pnpm-måten, med symlenker og delt cache.

Forstå pnpm-lock og node_modules-strukturen

pnpm-lock.yaml er pnpm sin versjon av lockfilen. Den styrer nøyaktig hvilke versjoner som brukes. Denne filen bør sjekkes inn i Git på samme måte som package-lock.json eller yarn.lock.

node_modules-mappen vil se annerledes ut enn med npm. pnpm bruker en mer rigid struktur som hindrer “hoisting” av pakker unødig. Hvis koden din tidligere utnyttet at en avhengighet tilfeldigvis ble tilgjengelig på rot, kan du nå oppdage feil som egentlig alltid har ligget der.

Typiske pnpm-kommandoer i hverdagen

I daglig arbeid trenger du i stor grad bare noen få kommandoer. Det viktigste er å bruke pnpm konsekvent, både lokalt og i CI, for å unngå blanding av lockfiler og ulike node_modules-strukturer.

  • Installere alle avhengigheter:pnpm install
  • Legge til en avhengighet:pnpm add axios eller pnpm add -D vitest
  • Oppdatere avhengigheter:pnpm update eller mer spesifikt pnpm update react
  • Kjøre scripts:pnpm run dev, pnpm test, osv.

pnpm i teamprosjekter og CI

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Jakub Zerdzicki / Pexels.

For å få nytte av pnpm i et team må alle bruke samme verktøy. Avklar i prosjektet at pnpm er standard, sjekk inn pnpm-lock.yaml, og legg til en kort notis i prosjektets dokumentasjon om hvordan man installerer og kjører ting.

I CI-pipelines er det viktig at miljøet har pnpm tilgjengelig før du kjører pnpm install. Mange CI-leverandører har egne steg eller ferdige images for pnpm, men dette kan variere, så sjekk oppdatert dokumentasjon for plattformen du bruker.

Monorepo: når pnpm blir ekstra nyttig

pnpm har innebygd støtte for arbeidsområder, som gjør det enklere å håndtere flere pakker i samme repo. Det kan være nyttig hvis du har et designbibliotek, en API-klient og en webapp i én struktur.

Typisk settes dette opp med en pnpm-workspace.yaml i rotmappen, der du definerer hvilke mapper som inngår i arbeidsområdet. Da deler prosjektene cache og kan referere til hverandre som lokale pakker uten tungvinte manuelle lenker.

Vanlige problemer og hvordan du løser dem

Noe kode forutsetter en npm-lignende struktur i node_modules. Hvis du møter merkelige “module not found”-feil etter overgang til pnpm, kan det være tegn på skjulte avhengigheter eller feilkonfigurerte imports.

En del verktøy og byggsystemer har egne instruksjoner for pnpm hvis de støtter det. Søk gjerne i dokumentasjonen etter “pnpm” før du begynner å legge inn workarounds, det kan spare deg for mye tid.

En enkel sjekkliste før du bytter

Før du bestemmer deg for å rulle ut pnpm i et eksisterende prosjekt med flere personer, er det nyttig å ha en kort plan. Da unngår du halvveis migrering og inkonsistens mellom maskiner.

  • Sjekk at verktøyene du bruker (build, test, bundler) støtter pnpm sin node_modules-struktur.
  • Avklar i teamet at pnpm blir ny standard, og oppdater dokumentasjonen.
  • Fjern gamle lockfiler og node_modules før første pnpm install.
  • Oppdater CI-oppsett til å installere pnpm og bruke pnpm install.
  • Overvåk eventuelle nye feil i første runde, og juster oppsettet ved behov.

Oppsummert: når gir pnpm mest verdi?

pnpm er mest nyttig når du har flere prosjekter på samme maskin, jobber i monorepo, eller kjenner på at node_modules tar urimelig mye plass. Da kan du få både raskere installasjoner og en mer forutsigbar avhengighetsstruktur.

Hvis du starter et nytt prosjekt, kan du like gjerne begynne direkte med pnpm. I større eksisterende kodebaser kan det lønne seg å teste på en egen branch først, slik at du ser hvilke justeringer som trengs før du gjør byttet fullt ut.

0 kommentarer