Passer au contenu principal
Version : Suivant

Motivation

Économie d’espace disque

Une illustration du dépôt adressable en contenu de pnpm. Sur l'illustration il y a deux projets avec des dossier node_modules. Les fichiers des répertoires node_modules sont des liens physiques vers les mêmes fichiers dans le dépôt adressable en contenu de pnpm.

Lorsque vous utilisez npm, si vous avez 100 projets utilisant une dépendance, vous aurez 100 copies de cette dépendance enregistrées sur le disque. Avec pnpm, la dépendance sera stockée dans un stockage adressable au contenu, donc:

  1. Si vous dépendez de différentes versions de la dépendance, seuls les fichiers qui diffèrent sont ajoutés au stockage. Par exemple, si elle a 100 fichiers, et qu'une nouvelle version a un changement dans un seul de ces fichiers, pnpm update ajoutera seulement 1 nouveau fichier au stockage, au lieu de cloner la dépendance toute entière juste pour un seul changement.
  2. Tous les fichiers sont enregistrés en un seul endroit sur le disque. Lorsque des packages sont installés, leurs fichiers sont liés directement à partir de cet emplacement unique, ne consommant aucun espace disque supplémentaire. Cela vous permet de partager les dépendances de même version entre les projets.

En conséquence, vous économisez beaucoup d'espace sur votre disque proportionnellement au nombre de projets et de dépendances, et vous avez des installations beaucoup plus rapides !

Accélérer la vitesse d'installation

pnpm effectue l'installation en trois étapes :

  1. La résolution des dépendances. Toutes les dépendances requises sont identifiées et extraites dans le dépôt.
  2. Calcul de la structure des dossiers. La structure du dossier node_modules est calculée en fonction des dépendances.
  3. Gestion des dépendances. Toutes les dépendances restantes sont récupérées à partir du dépôt et extraites vers le dossier node_modules.

Une illustration du processus d'installation de pnpm. Les packages sont résolus, récupérés et extraits en dur dès que possible.

Cette approche est nettement plus rapide que le traditionnel processus d'installation en trois étapes qui consistait à résoudre, récupérer et extraire toutes les dépendances dans le dossier node_modules.

Une illustration de la façon dont les gestionnaires de packages comme Yarn ou npm installent les dépendances.

Création d'un répertoire node_modules non uniforme

Lors de l'installation de dépendances avec npm ou Yarn, tous les packages sont hissés à la racine du dossier des modules. Par conséquent, le code source a accès aux dépendances qui ne sont pas ajoutées en tant que dépendances au projet.

Par défaut, pnpm utilise des liens symboliques pour n'ajouter que les dépendances directes du projet à la racine du dossier des modules.

Illustration d'un dossier node_modules créé par pnpm. Les packages à la racine node_modules sont des liens symboliques vers des dossiers à l'intérieur du répertoire node_modules/.pnpm

Si vous souhaitez avoir plus de détails sur la structure unique de node_modules que pnpm crée et pourquoi elle fonctionne bien avec l'environnement de Node.js, lisez:

astuce

Si votre outil ne fonctionne pas bien avec les liens symboliques, vous pouvez toujours utiliser pnpm et définir le paramètre node-linker sur hoisted. Cela indiquera à pnpm de créer un répertoire node_modules similaire à ceux créés par npm et Yarn Classic.