yarn: essentie, alternatieve pakketbeheerder voor React Native

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

yarn — een alternatieve pakketbeheerder voor Node.js, gemaakt door Facebook samen met Exponent, Google en Tilde in 2016. yarn loste de snelheids- en beveiligingsproblemen van npm 2-4 op: parallelle installatie, strikt lock-bestand en offline cache. Tegenwoordig behoudt yarn zijn populariteit in React Native, Expo en monorepository's. Meer op yarn Documentation.

Belangrijkste

  • yarn — pakketbeheerder voor Node.js, gemaakt door Facebook in 2016 om npm-problemen op te lossen
  • yarn.lock — bestand dat exacte versies van alle afhankelijkheden vastlegt, automatisch gegenereerd
  • yarn install — parallelle installatie van pakketten met behulp van wereldwijde cache zonder duplicatie
  • yarn workspaces — mechanisme voor het beheren van monorepository's met gedeelde node_modules-map
  • Plug'n'Play — alternatief voor node_modules met opslag van pakketten in ZIP-archieven in wereldwijde cache

Wat is yarn — pakketbeheerder?

yarn (Yet Another Resource Negotiator) uitgebracht in oktober 2016 als reactie van Facebook op de problemen van npm 2-4: trage installatie, ontbrekend lock-bestand en onveilige pakketten. yarn bood parallel downloaden van pakketten, deterministische yarn.lock en integriteitscontrole via checksums. In 2020 schakelde yarn over naar versie 2 (Berry) met Plug'n'Play en een TypeScript-first aanpak.

Architectuur van yarn verschilt van npm: yarn downloadt pakketten parallel (npm tot versie 5 — sequentieel), cached elk pakket in ~/.cache/yarn zonder duplicatie tussen projecten en controleert integriteit via checksum. yarn genereert altijd yarn.lock bij elke installatie, terwijl package-lock.json in npm pas in versie 5 verscheen.

Vanaf yarn 2 (Berry, 2020) is yarn volledig herschreven in TypeScript en ondersteunt het Plug'n'Play, workspaces, constraints voor monorepository's en installatieprotocollen uit verschillende bronnen (npm, git, tarball). yarn 3+ (2022) voegde Zero-Installs toe — opslag van cache in de repository voor directe installatie zonder netwerk.

Hoe yarn de installatie van afhankelijkheden beheert

yarn install — het hoofdcommando dat package.json en yarn.lock leest en afhankelijkheden installeert. yarn downloadt pakketten parallel, wat de installatie 2-3 keer versnelt in vergelijking met npm 4 en eerdere versies. yarn gebruikt offline cache: als een pakket al in een ander project is gedownload, wordt het uit de cache gekopieerd in plaats van opnieuw gedownload.

bash
# Belangrijkste yarn-commando's
$ yarn install
$ yarn add react-native-webview
$ yarn add --dev typescript
$ yarn global add expo-cli
# Interactieve update
$ yarn upgrade-interactive
# Dubbele pakketten verwijderen
$ yarn dedupe

yarn add — commando voor het installeren van een nieuw pakket. yarn add <package> voegt toe aan dependencies, yarn add --dev — aan devDependencies. yarn werkt automatisch yarn.lock bij. yarn upgrade werkt pakketten bij naar de nieuwste versies binnen het semantische bereik. yarn upgrade-interactive — interactieve modus voor het selecteren van specifieke pakketten om bij te werken.

yarn cache — wereldwijde cache in ~/.cache/yarn/v6. Elk pakket wordt eenmalig opgeslagen in een ZIP-archief met een checksum. yarn cache wordt automatisch opgeschoond, maar yarn cache clean kan handmatig worden uitgevoerd. yarn cache dir toont het pad naar de cache. yarn cache list — lijst van gecachte pakketten.

yarn.lock: doel en structuur van het bestand

yarn.lock — bestand dat exacte versies van alle afhankelijkheden en hun transitieve pakketten vastlegt. In tegenstelling tot package-lock.json (JSON) gebruikt yarn.lock het YAML-formaat met een platte structuur. yarn.lock wordt altijd automatisch gegenereerd bij yarn install of yarn add — dit garandeert dat alle ontwikkelaars en CI-servers dezelfde set pakketten krijgen.

yaml
# Voorbeeld van yarn.lock-structuur
react@^18.3.0:
  version: "18.3.1"
  resolution: "react@npm:18.3.1"
  dependencies:
    loose-envify: "^1.1.0"
  checksum: "abc123def456..."

react-native@^0.76.0:
  version: "0.76.3"
  resolution: "react-native@npm:0.76.3"
  dependencies:
    react: "18.3.1"
  checksum: "def789ghi012..."

Velden van yarn.lock: version — exacte versie van het pakket, resolution — bron en versie, dependencies — zijn afhankelijkheden, checksum — controlesom voor verificatie. yarn.lock wordt in de repository gecommit en is de enige bron van waarheid voor afhankelijkheden. Als yarn.lock en package.json niet overeenkomen, geeft yarn een waarschuwing.

Yarn constraints — regelsysteem voor monorepository's dat versies van afhankelijkheden in yarn.lock controleert en afdwingt. Beperkingen worden beschreven in het bestand yarn.constraints.js in Yarn Constraint Language. Constraints garanderen dat alle pakketten in een monorepository dezelfde versie van React of TypeScript gebruiken.

yarn in het React Native-ecosysteem

React Native is van oudsher nauw verbonden met yarn. Expo CLI, React Native CLI en Create React Native App gebruikten oorspronkelijk yarn. In React Native-projecten legt yarn.lock versies van native modules vast, wat cruciaal is voor stabiele compilatie via CocoaPods (iOS) en Gradle (Android). yarn workspaces zijn populair in React Native monorepository's met gedeelde code.

yarn workspaces in React Native monorepository's: root package.json bevat "workspaces": ["packages/*", "mobile"]. yarn install maakt een enkele node_modules-map op rootniveau. Pakketten verwijzen naar elkaar via symlinks. npx pod-install wordt uitgevoerd na het wijzigen van native afhankelijkheden om CocoaPods bij te werken.

json
{
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/mobile",
    "apps/web"
  ],
  "scripts": {
    "mobile:start": "yarn workspace mobile start",
    "mobile:ios": "yarn workspace mobile ios",
    "lint": "yarn workspaces run lint"
  }
}

Expo SDK 50+ beveelt officieel yarn aan voor nieuwe projecten gemaakt via npx create-expo-app. yarn zorgt voor compatibiliteit met Expo-modules en genereert automatisch correcte yarn.lock. Zero-Installs in yarn 3+ maakt het mogelijk cache in de repository te committen — ontwikkelaars krijgen een kant-en-klare omgeving zonder afhankelijkheden te installeren na git clone.

yarn en npm: vergelijkende analyse

npm en yarn lossen dezelfde taak op — het beheren van Node.js-pakketten. Met de release van npm 5-7 is de functionele kloof vrijwel verdwenen. npm 7+ omvat workspaces, npm ci (equivalent van yarn install --frozen-lockfile) en parallelle installatie. yarn behoudt echter voordelen in specifieke scenario's: Plug'n'Play, Zero-Installs en een volwassen constraints-systeem.

Kenmerknpmyarn
Jaar van oprichting20102016
Lock-bestandpackage-lock.json (JSON)yarn.lock (YAML)
InstallatieSequentieel (npm 5+)Parallel
Plug'n'PlayNeeJa (yarn 2+)
WorkspacesJa (npm 7+)Ja
Zero-InstallsNeeJa (yarn 3+)
Cachenode_modules met flatteningWereldwijd ~/.cache/yarn
ImplementatietaalJavaScriptTypeScript (yarn 2+)

Wanneer yarn kiezen: projecten op Expo SDK 50+, grote monorepository's (100+ pakketten), teams die Zero-Installs waarderen voor snelle omgevingsconfiguratie en legacy-projecten die al yarn gebruiken. Wanneer npm kiezen: standaardprojecten create-react-app, Next.js, Vite, teams zonder specifieke vereisten voor de pakketbeheerder.

yarn 4 (2024) introduceerde verbeterde prestaties, native ESM-ondersteuning en optimalisatie voor grote monorepository's. npm 10+ blijft zich ontwikkelen met focus op beveiliging en compatibiliteit. De keuze tussen npm en yarn is tegenwoordig een kwestie van teamvoorkeuren en specifieke projectvereisten, niet van technische superioriteit van een tool.

Veelgestelde vragen

Wat is het belangrijkste verschil tussen yarn en npm?

yarn overtrof aanvankelijk npm in snelheid dankzij parallelle installatie van pakketten en agressieve caching. yarn.lock wordt automatisch gegenereerd bij elke installatie, terwijl package-lock.json pas in npm 5 verscheen. yarn biedt Plug'n'Play — een alternatief voor node_modules met null installatietijd. Sinds npm 7+ is het verschil in snelheid en functionaliteit voor basisscenario's minimaal.

Hoe werken yarn workspaces in monorepository's?

yarn workspaces — mechanisme voor het beheren van meerdere pakketten in één repository. Root package.json bevat het veld "workspaces": ["packages/*"]. yarn install installeert gemeenschappelijke afhankelijkheden op het bovenste niveau in één node_modules, maakt symlinks tussen lokale pakketten en voorkomt duplicatie. Commando's worden voor alle workspaces uitgevoerd via yarn workspaces run <script>.

Wat is yarn Plug'n'Play en waarvoor dient het?

Plug'n'Play (PnP) — een alternatief voor de traditionele node_modules-map, geïntroduceerd in yarn 2. In plaats van bestanden te kopiëren, maakt yarn een afhankelijkheidskaart in .pnp.cjs en slaat pakketten op in ZIP-archieven in de wereldwijde cache. Voordelen van PnP: installatie in seconden, opstarttijd van Node.js vermindert met 30-50%, afwezigheid van node_modules en bijbehorende padproblemen.

Hoe migreer ik een project van npm naar yarn?

Installeer yarn globaal: npm install -g yarn. Voer in de projectroot yarn import uit — yarn leest package-lock.json en maakt een equivalente yarn.lock. Verwijder node_modules en package-lock.json, voer yarn install uit voor verificatie. Werk de CI/CD-configuratie bij door npm te vervangen door yarn. yarn is volledig compatibel met package.json.

Hoe repareer ik versieblokkeringsfouten in yarn?

De fout "Integrity check failed" treedt op bij een mismatch tussen yarn.lock en node_modules. Oplossing: verwijder node_modules, yarn.lock en leeg de cache (yarn cache clean), voer vervolgens opnieuw yarn install uit. Voor versieconflicten gebruik yarn upgrade-interactive om specifieke updates te selecteren. yarn dedupe verwijdert dubbele pakketten.

Samenvatting

  • yarn — alternatieve pakketbeheerder voor Node.js, gemaakt door Facebook in 2016
  • yarn.lock — bestand dat exacte versies van alle afhankelijkheden vastlegt in YAML-formaat
  • yarn install — parallelle installatie van pakketten met behulp van wereldwijde offline cache
  • Plug'n'Play — innovatief mechanisme van yarn 2+ zonder node_modules-map
  • yarn workspaces — beheer van monorepository's met één node_modules
  • yarn in React Native — standaard pakketbeheerder voor Expo en React Native-projecten
  • Zero-Installs — cache committen in de repository voor directe installatie zonder pakketten te downloaden

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