Hoe pnpm inschakelen en gebruiken in ServBay
pnpm
is een moderne en efficiënte Node.js-pakketbeheerder, speciaal ontworpen om de tekortkomingen van traditionele beheerders zoals npm
en yarn
bij het beheren van afhankelijkheden aan te pakken. Door gebruik te maken van een op content-adres gebaseerde bestandsopslag en het inzetten van harde/symbolische links, vermindert pnpm
het schijfgebruik aanzienlijk en versnelt het installatieprocessen merkbaar. Voor ontwikkelaars die Node.js-projecten ontwikkelen met ServBay, biedt pnpm een krachtige manier om afhankelijkheden effectief te beheren.
Het Node.js-pakket van ServBay bevat corepack
, een experimenteel hulpmiddel van het officiële Node.js-team om projecten te laten werken met specifieke versies van pakketbeheerders zoals npm
, yarn
en pnpm
. Na installatie van Node.js via ServBay kun je doorgaans pnpm inschakelen via het corepack-commando.
pnpm inschakelen
Als je merkt dat het pnpm
-commando nog niet direct werkt, komt dat meestal doordat het nog niet is ingeschakeld via corepack
. Volg deze stappen om het te activeren:
Open de Terminal-applicatie.
Voer het volgende commando uit om pnpm via
corepack
te activeren:bashcorepack enable pnpm
1Als het commando succesvol wordt uitgevoerd, verschijnt er doorgaans geen output. Dit betekent dat corepack het pnpm-commando aan je systeem heeft gekoppeld.
Controleer of pnpm succesvol is ingeschakeld en bekijk het versienummer:
bashpnpm -v
1Na uitvoering van dit commando zou je het huidige versie nummer van pnpm moeten zien, bijvoorbeeld:
bash9.1.0
1Zodra je het versienummer ziet, is pnpm correct geïnstalleerd en klaar voor gebruik.
Meldingen bij downloaden via corepack
Wanneer je het pnpm-commando gebruikt, kan het voorkomen dat je een melding zoals de onderstaande tegenkomt. Dit geeft aan dat corepack bezig is met het downloaden of updaten van de opgegeven versie van pnpm. Dit is normaal en zorgt ervoor dat je de juiste of nieuwste versie van pnpm voor je project gebruikt.
bash
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]
1
2
3
2
3
Druk op Y
en ENTER om corepack toe te staan pnpm te downloaden en door te gaan. Nadat het downloaden voltooid is, zal het oorspronkelijke commando worden uitgevoerd en het versienummer (of de output van het gegeven pnpm-commando) tonen.
De belangrijkste voordelen van pnpm & gebruiksvoorbeelden
Het ontwerp van pnpm
draait om het efficiënt beheren van afhankelijkheden. Alle pakketten worden in één globale, content-adresseerbare opslag bewaard, waarbij elke versie slechts één keer wordt opgeslagen. Wanneer een project een afhankelijkheid nodig heeft, maakt pnpm een harde link vanuit de globale opslag, terwijl de node_modules
-map in je project een plat structuur heeft door middel van symbolische links. Dit voorkomt het beruchte "phantom dependency"-probleem van npm: alleen modules die direct zijn gedeclareerd als afhankelijkheid zijn daadwerkelijk toegankelijk in het project.
Deze aanpak heeft belangrijke voordelen:
- Bespaar schijfruimte: Verschillende projecten delen dezelfde versies van packages, waardoor dubbele opslag wordt voorkomen.
- Snellere installaties: In de meeste gevallen zijn benodigde packages al beschikbaar in de globale opslag en hoeft pnpm alleen links te maken, wat veel sneller is dan downloaden of kopiëren.
- Strikte afhankelijkheidsstructuur: Voorkomt phantom dependencies, waardoor afhankelijkheden duidelijk en beheersbaar zijn.
Enkele veelgebruikte pnpm-commando’s onder ServBay:
Stel dat je project zich bevindt in een submap binnen de ServBay root directory, zoals /Applications/ServBay/www/my-servbay-app
.
Projectafhankelijkheden installeren
Zodra je in de projectmap bent, installeer je alle afhankelijkheden uit de package.json
met:
bash
cd /Applications/ServBay/www/my-servbay-app
pnpm install
1
2
2
pnpm
controleert de globale opslag, downloadt ontbrekende pakketten en maakt links aan in de node_modules
-map van je project.
Nieuwe afhankelijkheid toevoegen
Om een nieuwe afhankelijkheid toe te voegen, bijvoorbeeld lodash
:
bash
pnpm add lodash
1
Dit downloadt (indien nodig) lodash
, maakt de benodigde links en werkt automatisch package.json
en pnpm-lock.yaml
bij.
Afhankelijkheid verwijderen
Een niet langer benodigde afhankelijkheid, bijvoorbeeld lodash
, verwijder je als volgt:
bash
pnpm remove lodash
1
Dit verwijdert lodash
uit de projectafhankelijkheden en werkt zowel package.json
als pnpm-lock.yaml
bij.
Scripts uitvoeren
Je kunt pnpm ook gebruiken om scripts uit te voeren zoals gedefinieerd onder het scripts
-veld in package.json
:
bash
pnpm run dev
# Of afgekort:
pnpm dev
1
2
3
2
3
Package-commando's uitvoeren (pnpx)
Net als npx
biedt pnpm het commando pnpx
(of rechtstreeks pnpm exec
) om packages die lokaal in node_modules/.bin
staan uit te voeren, zonder ze globaal te hoeven installeren:
bash
pnpm exec webpack --version
# Of afgekort:
pnpx webpack --version
1
2
3
2
3
Samenvatting
Door het commando corepack enable pnpm
uit te voeren, kun je eenvoudig pnpm inschakelen in de Node.js-omgeving van ServBay. Met de efficiënte manier van afhankelijkheidsbeheer van pnpm, kun je de installatiesnelheid en productiviteit van je Node.js-projecten aanzienlijk verhogen, terwijl je ook nog eens veel schijfruimte bespaart. Voor ontwikkelaars die het maximale uit hun ServBay-ervaring willen halen, is pnpm absoluut een aanrader.