yarn : essence, gestionnaire de paquets alternatif pour React Native

Auteur : IT Sectr Publié le : 2026-02-13 Temps de lecture : 10 min

yarn — un gestionnaire de paquets alternatif pour Node.js, créé par Facebook en collaboration avec Exponent, Google et Tilde en 2016. yarn a résolu les problèmes de vitesse et de sécurité de npm 2-4 : installation parallèle, fichier de verrouillage strict et cache hors ligne. Aujourd'hui, yarn reste populaire dans React Native, Expo et les monorepos. En savoir plus sur yarn Documentation.

Points clés

  • yarn — un gestionnaire de paquets pour Node.js, créé par Facebook en 2016 pour résoudre les problèmes de npm
  • yarn.lock — un fichier de verrouillage qui enregistre les versions exactes de toutes les dépendances, généré automatiquement
  • yarn install — installation parallèle des paquets en utilisant un cache global sans duplication
  • yarn workspaces — un mécanisme de gestion des monorepos avec un dossier node_modules partagé
  • Plug'n'Play — une alternative à node_modules qui stocke les paquets dans des archives ZIP dans un cache global

Qu'est-ce que yarn — un gestionnaire de paquets ?

yarn (Yet Another Resource Negotiator) a été publié en octobre 2016 comme réponse de Facebook aux problèmes de npm 2-4 : installation lente, absence de fichier de verrouillage et paquets non sécurisés. yarn a introduit les téléchargements parallèles de paquets, le yarn.lock déterministe et la vérification d'intégrité via des sommes de contrôle. En 2020, yarn est passé à la version 2 (Berry) avec Plug'n'Play et une approche TypeScript-first.

L'architecture de yarn diffère de npm : yarn télécharge les paquets en parallèle (npm avant la version 5 — séquentiellement), met en cache chaque paquet dans ~/.cache/yarn sans duplication entre projets et vérifie l'intégrité via des sommes de contrôle. yarn génère toujours yarn.lock à chaque installation, tandis que package-lock.json dans npm n'est apparu qu'à la version 5.

À partir de yarn 2 (Berry, 2020), yarn a été entièrement réécrit en TypeScript et prend en charge Plug'n'Play, les workspaces, les constraints pour les monorepos et les protocoles d'installation depuis différentes sources (npm, git, tarball). yarn 3+ (2022) a ajouté Zero-Installs — stocker le cache dans le référentiel pour une installation instantanée sans accès réseau.

Comment yarn gère l'installation des dépendances

yarn install — la commande principale qui lit package.json et yarn.lock et installe les dépendances. yarn télécharge les paquets en parallèle, ce qui accélère l'installation de 2 à 3 fois par rapport à npm 4 et versions antérieures. yarn utilise un cache hors ligne : si un paquet a déjà été téléchargé dans un autre projet, il est copié depuis le cache plutôt que d'être téléchargé à nouveau.

bash
# Commandes de base de yarn
$ yarn install
$ yarn add react-native-webview
$ yarn add --dev typescript
$ yarn global add expo-cli
# Mise à jour interactive
$ yarn upgrade-interactive
# Supprimer les paquets en double
$ yarn dedupe

yarn add — la commande pour installer un nouveau paquet. yarn add <package> ajoute à dependencies, yarn add --dev — à devDependencies. yarn met automatiquement à jour yarn.lock. yarn upgrade met à jour les paquets vers les dernières versions dans la plage sémantique. yarn upgrade-interactive — un mode interactif pour sélectionner des paquets spécifiques à mettre à jour.

yarn cache — un cache global dans ~/.cache/yarn/v6. Chaque paquet est stocké une fois dans une archive ZIP avec une somme de contrôle. Le cache de yarn est nettoyé automatiquement, mais vous pouvez exécuter yarn cache clean manuellement. yarn cache dir montre le chemin du cache. yarn cache list — liste les paquets mis en cache.

yarn.lock : objectif et structure du fichier

yarn.lock — un fichier de verrouillage qui enregistre les versions exactes de toutes les dépendances et de leurs paquets transitifs. Contrairement à package-lock.json (JSON), yarn.lock utilise un format YAML avec une structure plate. yarn.lock est toujours généré automatiquement lors de yarn install ou yarn add — cela garantit que tous les développeurs et serveurs CI obtiennent un ensemble identique de paquets.

yaml
# Exemple de structure yarn.lock
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..."

Champs de yarn.lock : version — version exacte du paquet, resolution — source et version, dependencies — ses dépendances, checksum — somme de contrôle pour vérification. yarn.lock est commité dans le référentiel et est la seule source de vérité pour les dépendances. Si yarn.lock et package.json divergent, yarn émet un avertissement.

Yarn constraints — un système de règles pour les monorepos qui vérifie et applique les versions de dépendances dans yarn.lock. Les contraintes sont décrites dans le fichier yarn.constraints.js en utilisant le Yarn Constraint Language. Les constraints permettent de garantir que tous les paquets d'un monorepo utilisent la même version de React ou TypeScript.

yarn dans l'écosystème React Native

React Native a traditionnellement été étroitement lié à yarn. Expo CLI, React Native CLI et Create React Native App utilisaient initialement yarn. Dans les projets React Native, yarn.lock fige les versions des modules natifs, ce qui est crucial pour une compilation stable via CocoaPods (iOS) et Gradle (Android). Les yarn workspaces sont populaires dans les monorepos React Native avec du code partagé.

yarn workspaces dans les monorepos React Native : le package.json racine contient "workspaces": ["packages/*", "mobile"]. yarn install crée un seul dossier node_modules au niveau racine. Les paquets se référencent mutuellement via des liens symboliques. npx pod-install est exécuté après la modification des dépendances natives pour mettre à jour CocoaPods.

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+ recommande officiellement yarn pour les nouveaux projets créés via npx create-expo-app. yarn garantit la compatibilité avec les modules Expo et génère automatiquement le yarn.lock correct. Zero-Installs dans yarn 3+ permet de commiter le cache dans le référentiel — les développeurs obtiennent un environnement prêt à l'emploi sans installer de dépendances après git clone.

yarn et npm : une analyse comparative

npm et yarn résolvent le même problème — la gestion des paquets Node.js. Avec la sortie de npm 5-7, l'écart fonctionnel a pratiquement disparu. npm 7+ inclut les workspaces, npm ci (équivalent de yarn install --frozen-lockfile) et l'installation parallèle. Cependant, yarn conserve des avantages dans des scénarios spécifiques : Plug'n'Play, Zero-Installs et un système de constraints mature.

Caractéristiquenpmyarn
Année de création20102016
Fichier de verrouillagepackage-lock.json (JSON)yarn.lock (YAML)
InstallationSéquentielle (npm 5+)Parallèle
Plug'n'PlayNonOui (yarn 2+)
WorkspacesOui (npm 7+)Oui
Zero-InstallsNonOui (yarn 3+)
Cachenode_modules avec flatteningGlobal ~/.cache/yarn
Langage d'implémentationJavaScriptTypeScript (yarn 2+)

Quand choisir yarn : projets sur Expo SDK 50+, grands monorepos (100+ paquets), équipes qui valorisent Zero-Installs pour une configuration rapide de l'environnement et projets hérités utilisant déjà yarn. Quand choisir npm : projets standards create-react-app, Next.js, Vite, équipes sans exigences spécifiques de gestionnaire de paquets.

yarn 4 (2024) a introduit des performances améliorées, la prise en charge native d'ESM et l'optimisation pour les grands monorepos. npm 10+ continue d'évoluer en se concentrant sur la sécurité et la compatibilité. Le choix entre npm et yarn aujourd'hui est une question de préférences d'équipe et d'exigences spécifiques du projet, et non de supériorité technique d'un outil sur un autre.

Foire aux questions

Quelle est la principale différence entre yarn et npm ?

yarn a initialement surpassé npm en vitesse grâce à l'installation parallèle des paquets et à la mise en cache agressive. yarn.lock est généré automatiquement à chaque installation, tandis que package-lock.json est apparu dans npm 5. yarn propose Plug'n'Play — une alternative à node_modules avec un temps d'installation nul. Avec npm 7+, la différence de vitesse et de fonctionnalité pour les scénarios de base est minime.

Comment fonctionnent les yarn workspaces dans les monorepos ?

yarn workspaces — un mécanisme pour gérer plusieurs paquets dans un seul référentiel. Le package.json racine contient le champ "workspaces": ["packages/*"]. yarn install installe les dépendances partagées au niveau supérieur dans un seul node_modules, crée des liens symboliques entre les paquets locaux et évite la duplication. Les commandes sont exécutées pour tous les workspaces via yarn workspaces run <script>.

Qu'est-ce que yarn Plug'n'Play et à quoi sert-il ?

Plug'n'Play (PnP) — une alternative au dossier node_modules traditionnel, introduite dans yarn 2. Au lieu de copier des fichiers, yarn crée une carte de dépendances dans .pnp.cjs et stocke les paquets dans des archives ZIP dans un cache global. Avantages de PnP : installation en secondes, temps de démarrage de Node.js réduit de 30 à 50 %, pas de node_modules ni de problèmes de chemins associés.

Comment migrer un projet de npm vers yarn ?

Installez yarn globalement : npm install -g yarn. À la racine du projet, exécutez yarn import — yarn lit package-lock.json et crée un yarn.lock équivalent. Supprimez node_modules et package-lock.json, exécutez yarn install pour vérifier. Mettez à jour la configuration CI/CD en remplaçant npm par yarn. yarn est entièrement compatible avec package.json.

Comment corriger les erreurs de verrouillage de version dans yarn ?

L'erreur "Integrity check failed" se produit lorsque yarn.lock et node_modules ne sont pas synchronisés. Solution : supprimez node_modules, yarn.lock et videz le cache (yarn cache clean), puis exécutez à nouveau yarn install. Pour les conflits de versions, utilisez yarn upgrade-interactive pour sélectionner des mises à jour spécifiques. yarn dedupe supprimera les paquets en double.

Résumé

  • yarn — un gestionnaire de paquets alternatif pour Node.js créé par Facebook en 2016
  • yarn.lock — un fichier de verrouillage qui enregistre les versions exactes de toutes les dépendances au format YAML
  • yarn install — installation parallèle de paquets en utilisant un cache hors ligne global
  • Plug'n'Play — un mécanisme innovant de yarn 2+ sans le dossier node_modules
  • yarn workspaces — gestion de monorepos avec un seul node_modules
  • yarn dans React Native — le gestionnaire de paquets standard pour les projets Expo et React Native
  • Zero-Installs — commiter le cache dans le référentiel pour une installation instantanée sans téléchargement de paquets

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi