npm: basis, pakketbeheerder voor React Native en Node.js

Auteur: IT Sectr Gepubliceerd: 2026-02-13 Leestijd: 10 min

npm (Node Package Manager) — de standaard pakketbeheerder voor het Node.js-platform, meegeleverd met de Node.js-installatie. npm beheert afhankelijkheden van JavaScript en TypeScript projecten: installeert bibliotheken in node_modules, werkt pakketversies bij, lost versieconflicten op. package.json — het centrale configuratiebestand met metadata en een lijst van afhankelijkheden. npm Registry — de grootste pakketregister. Meer op npm Registry.

Belangrijkste punten

  • npm — de standaard pakketbeheerder van Node.js, meegeleverd met Node.js sinds versie 0.6.3
  • package.json — het configuratiebestand van het project met afhankelijkheden, scripts en metadata
  • npm install — het basiscommando om afhankelijkheden uit package.json in de map node_modules te installeren
  • package-lock.json — het bestand voor het vastleggen van exacte versies voor reproduceerbare installaties in alle omgevingen
  • npm ci — het commando voor CI/CD dat pakketten strikt volgens het lock-bestand installeert zonder het bij te werken

Wat is npm — de pakketbeheerder van Node.js?

npm werd in 2010 gecreëerd door Isaac Schlueter als een oplossing voor het beheren van Node.js-afhankelijkheden. Sinds 2014 wordt npm beheerd door npm, Inc., overgenomen door Microsoft/GitHub in 2020. Het gereedschap bestaat uit twee delen: CLI (commandoregel) voor het installeren en beheren van pakketten, en Registry — de centrale repository van alle gepubliceerde modules op registry.npmjs.org.

npm Registry — de grootste pakketregister: meer dan 2 miljoen pakketten en meer dan 10 miljard downloads per maand. Elk pakket heeft een SemVer-versie, beschrijving, afhankelijkheden, licentie en auteurschap. Het publiceren van een eigen pakket gebeurt via npm publish. npm ondersteunt gescoopte pakketten voor organisaties (@scope/package), privéregisters en ingebouwde beveiligingsaudit.

Node.js versie 18+ bevat npm 9+ met verbeterde prestaties, workspaces voor monorepo's en een herziene peer dependencies-mechanisme. Het npm-ecosysteem omvat server-side JavaScript, frontend (React, Vue, Angular), mobiele ontwikkeling (React Native), buildtools (Webpack, Vite) en CLI-hulpprogramma's. npm is het belangrijkste distributiekanaal voor JavaScript-bibliotheken.

Belangrijkste functionaliteiten van npm

npm install — het hoofdcommando dat package.json en package-lock.json leest om alle afhankelijkheden in node_modules te installeren. Bij de eerste uitvoering berekent npm de afhankelijkheidsgraaf, lost versieconflicten op en genereert package-lock.json. Het commando npm install <package> installeert een specifiek pakket; de vlag --save-dev voegt toe aan devDependencies, --global — globaal.

npx — de pakketuitvoerder, meegeleverd met npm sinds versie 5.2. npx maakt het mogelijk CLI-hulpprogramma's uit te voeren zonder globale installatie: npx react-native init of npx create-react-app my-app. npx downloadt het pakket naar een tijdelijke cache, voert het uit en ruimt het na afloop op. npx is ook handig voor het uitvoeren van specifieke versies van tools.

npm audit scant de afhankelijkheidsboom op bekende kwetsbaarheden uit de npm-database. Het commando toont een rapport met ernstniveaus (critical, high, moderate) en beveelt npm audit fix aan voor automatische updates van kwetsbare pakketten. npm cache slaat gedownloade pakketten lokaal op. npm cache clean --force wist de cache bij installatieproblemen. npm outdated toont verouderde pakketten.

bash
# Belangrijkste npm-commando's
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Uitvoeren zonder globale installatie
$ npx react-native init MyApp
# Beveiligingsaudit
$ npm audit --fix

Structuur van package.json en afhankelijkheidsbeheer

package.json — is een JSON-bestand in de projectroot dat de metadata, afhankelijkheden en configuratie beschrijft. Verplichte velden: name (unieke pakketnaam) en version (SemVer-versie, bijvoorbeeld 1.0.0). Het bestand wordt aangemaakt met het commando npm init -y voor snelle initialisatie of handmatig.

Semantic Versioning (SemVer) — de versienorm MAJOR.MINOR.PATCH. De hoofdversie verandert bij incompatibele API-wijzigingen, de kleine versie bij toevoeging van functionaliteit (achterwaarts compatibel), en de patch bij het oplossen van bugs. Het symbool ^ voor de versie staat updates van de kleine versie en patch toe, ~ alleen de patch.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
VeldDoelVoorbeeldwaarde
scriptsStartcommando's voor npm run"start": "node index.js"
dependenciesProductieafhankelijkheden van de applicatie"react": "^18.3.0"
devDependenciesOntwikkel- en testtools"jest": "^29.7.0"
peerDependenciesHostafhankelijkheden voor bibliotheken"react": ">=17.0.0"
enginesNode.js-versievereisten{"node": ">=18.0.0"}

npm in React Native ontwikkeling

React Native projecten maken actief gebruik van npm voor afhankelijkheidsbeheer. De standaardset omvat react, react-native, navigatiebibliotheken (React Navigation), HTTP-verzoeken (axios), toestandsbeheer (Redux, Zustand) en UI-componenten. npm maakt het mogelijk duizenden compatibele pakketten uit het register te installeren.

npx pod-install — een verplicht commando na installatie van native modules in React Native voor iOS. npm genereert automatisch Podfile.lock op basis van package-lock.json. In Expo-projecten wordt expo install gebruikt in plaats van npm install, omdat het versies kiest die compatibel zijn met de huidige Expo SDK-versie.

Versieconflicten — een veelvoorkomend probleem in React Native: react-native-reanimated, react-native-gesture-handler en react-native-safe-area-context vereisen compatibele versies. Oplossing — alle pakketten bijwerken naar de nieuwste compatibele versies of --legacy-peer-deps gebruiken. package-lock.json is cruciaal voor native modules die via CocoaPods en Gradle worden gecompileerd.

Vergelijking van npm met alternatieve beheerders

npm — de standaard pakketbeheerder, meegeleverd met Node.js. De belangrijkste alternatieven: yarn (gemaakt door Facebook in 2016) en pnpm (snel, met harde links). Sinds npm 5 is het verschil in snelheid en functionaliteit tussen npm en yarn minimaal. npm 7+ voegde workspaces toe, wat het concurrerend maakt voor monorepo's.

Kenmerknpmyarnpnpm
Jaar van oprichting201020162017
Lock-bestandpackage-lock.jsonyarn.lockpnpm-lock.yaml
InstallatieSequentiëel (npm 5+)ParallelParallel
SchijfruimteStandaardStandaardMinimaal (links)
WorkspacesJa (npm 7+)JaJa
Plug'n'PlayNeeJaNee

Volgens State of JS 2025: npm wordt gebruikt door 62% van de ontwikkelaars, yarn — 35% (voornamelijk oude projecten en PnP-fans), pnpm — 3%. Voor React Native projecten zijn beide tools gelijkwaardig, maar npm komt vaker voor in projecten op Expo SDK 50+ en nieuwe React Native-initialisaties.

yarn behoudt zijn voordeel in extreem grote monorepo's (100+ pakketten) dankzij een volwassener implementatie van workspaces en Plug'n'Play. pnpm wint op het gebied van schijfruimtebesparing door harde links naar een globale opslag. De keuze van de beheerder hangt af van teamvoorkeuren en infrastructuur.

Veelgestelde vragen

Wat is het verschil tussen npm install en npm ci?

npm install werkt package-lock.json bij en kan nieuwe kleine versies binnen het semantische bereik installeren. npm ci (Clean Install) verwijdert node_modules en installeert pakketten strikt volgens package-lock.json zonder het bij te werken. npm ci is sneller, wordt gebruikt in CI/CD en garandeert een identieke omgeving op alle machines. Als package-lock.json ontbreekt, geeft npm ci een foutmelding.

Hoe los je peer dependencies-conflicten op in npm?

Sinds npm 7 veroorzaken peer dependencies-conflicten een buildfout. Oplossingen: alle pakketten bijwerken naar compatibele versies via npm update, de vlag --legacy-peer-deps gebruiken voor npm 6-modus, of een overrides-sectie toevoegen in package.json om de versie van een specifiek pakket geforceerd vast te leggen. De beste optie — afhankelijkheden bijwerken naar compatibele versies.

Wat is npm audit en waarom is het nodig?

npm audit scant de afhankelijkheidsboom op bekende kwetsbaarheden uit de npm Security Advisory-database. Het commando toont een rapport met ernstniveaus (critical, high, moderate, low) en beveelt npm audit fix aan voor automatische updates van kwetsbare pakketten naar veilige versies. Regelmatig npm audit uitvoeren — een basisbeveiligingspraktijk in JavaScript-projecten.

Hoe vereenvoudigen npm workspaces monorepo's?

npm workspaces maken het mogelijk meerdere pakketten in één repository te beheren. Voeg het veld "workspaces": ["packages/*"] toe in de root package.json. Voordelen: uniforme installatie van alle afhankelijkheden in een gedeelde node_modules, automatische symlinks tussen lokale pakketten, uitvoeren van scripts voor alle pakketten vanuit de root, eliminatie van versieduplicatie.

Waarom moet package-lock.json worden gecommit in de repository?

package-lock.json legt de exacte versies vast van alle afhankelijkheden en hun transitieve pakketten. Zonder dit kunnen verschillende ontwikkelaars en CI-servers verschillende bibliotheekversies binnen het semantische bereik krijgen, wat leidt tot fouten van het type "het werkt op mijn machine". Het committen van het lock-bestand garandeert reproduceerbare builds en identiek gedrag in alle omgevingen.

Samenvatting

  • npm — de standaard pakketbeheerder van Node.js, meegeleverd met Node.js sinds versie 0.6.3
  • package.json — het configuratiebestand van het project met afhankelijkheden, scripts en metadata
  • npm install — installatie van afhankelijkheden, npm ci — vastleggen volgens package-lock.json voor CI/CD
  • package-lock.json — vastlegging van exacte versies, verplicht voor reproduceerbare builds
  • npm Registry — de grootste pakketregister met meer dan 2 miljoen modules
  • npm audit — beveiligingscontrole van afhankelijkheden met automatisch oplossen van kwetsbaarheden
  • npm workspaces — mechanisme voor het beheren van monorepo's met gedeelde node_modules

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook