Yarn est un gestionnaire de paquets pour l’écosystème JavaScript, créé par Facebook (Meta) en 2016 en réponse aux lenteurs et aux problèmes de fiabilité de npm à l’époque. Il permet d’installer, de mettre à jour et de gérer les dépendances (bibliothèques, frameworks, outils) d’un projet de développement web ou Node.js.
Ses fonctions principales :
- Installer des paquets : depuis le registre npm (le plus grand catalogue de bibliothèques JavaScript) ou depuis d’autres sources.
- Résoudre les dépendances : gérer les versions et les conflits entre les bibliothèques.
- Verrouiller les versions : garantir que tous les développeurs d’une équipe utilisent exactement les mêmes versions (via le fichier
yarn.lock). - Exécuter des scripts : lancer des tâches définies dans le fichier
package.json(tests, build, démarrage du serveur…).
Analogie
Comme un chef de chantier pour la construction d’une maison JavaScript :
- Le registre npm est un gigantesque entrepôt de matériaux (bibliothèques) où chaque pièce est référencée.
- npm est un livreur qui apporte les pièces une par une.
- Yarn est un contremaître plus organisé : il liste toutes les pièces nécessaires (dans un plan), vérifie leur compatibilité, les commande en parallèle (plus rapide), et stocke une copie de chaque pièce pour les prochains chantiers (cache).
- Grâce à son carnet de bord (
yarn.lock), il s’assure que chaque ouvrier (développeur) utilise exactement les mêmes pièces, évitant ainsi les mauvaises surprises.
Yarn vs npm : différences clés
| Critère | Yarn (classique) | npm (actuel) |
|---|---|---|
| Année de création | 2016 | 2010 |
| Vitesse d’installation | Plus rapide (grâce au cache et au parallélisme) | Très rapide (amélioré depuis la v5) |
| Fichier de verrouillage | yarn.lock | package-lock.json |
| Cache local | Stocke les paquets téléchargés pour les réutiliser | Stocke aussi, mais de manière moins efficace à l’origine |
| Workspaces | Support natif | Support natif (depuis npm v7) |
| Mode hors ligne | Oui (réinstalle les paquets depuis le cache) | Oui (depuis npm v5) |
| Interface en ligne | Commandes plus concises (yarn add vs npm install) | Commandes plus longues |
Commandes essentielles
| Action | npm | Yarn |
|---|---|---|
| Installer toutes les dépendances | npm install | yarn ou yarn install |
| Ajouter un paquet | npm install <paquet> | yarn add <paquet> |
| Ajouter un paquet en dev | npm install <paquet> --save-dev | yarn add <paquet> --dev |
| Mettre à jour un paquet | npm update <paquet> | yarn upgrade <paquet> |
| Supprimer un paquet | npm uninstall <paquet> | yarn remove <paquet> |
| Exécuter un script | npm run <script> | yarn <script> (plus court) |
Les versions de Yarn
Il existe aujourd’hui deux versions majeures de Yarn :
| Version | Particularité |
|---|---|
| Yarn 1.x (Classic) | La version historique, encore très utilisée, compatible avec npm. |
| Yarn 2.x / 3.x (Berry) | Une refonte majeure avec des Plug’n’Play (PnP) : au lieu de créer un lourd dossier node_modules, Yarn génère un fichier qui pointe directement vers les paquets. Plus rapide, plus fiable, mais moins compatible avec certains outils. |
Pourquoi choisir Yarn ?
Avantages :
- Installation plus rapide sur les gros projets
- Fiabilité des versions grâce au lockfile
- Interface un peu plus agréable (commandes courtes)
- Workspaces natifs pour les monorepos
- Sécurité renforcée (checksums)
Inconvénients :
- Moins adopté que npm (moins de documentation tierce)
- Yarn 2/3 peut causer des problèmes de compatibilité
- npm a beaucoup rattrapé son retard (notamment en performance)
À retenir
Yarn offre une expérience souvent plus fluide et rapide, avec des fonctionnalités avancées pour les gros projets.
Yarn et npm sont deux magasins concurrents qui vendent les mêmes briques (les paquets du registre npm). La différence réside dans la manière de les gérer :
npm est le standard historique, intégré par défaut avec Node.js.