Passa al contenuto principale
Version: 5.x

Motivazione

Risparmio dello spazio su disco ed aumento della velocità di installazione#

Quando si usa npm o Yarn, se hai 100 progetti che usano una dipendenza, avrai 100 copie di quella dipendenza salvata su disco. Con pnpm, le dipendenze sono salvate in uno store content-addressable, di conseguenza:

  1. Se dipendi da versioni diverse della dipendenza, solo i file diversi sono aggiunti allo store. Ad esempio, se una dipendenza ha 100 file e una nuova versione ha cambiamenti in un solo file, pnpm update aggiungerà solamente un nuovo file all'interno dello store, invece di clonare l'intera dipendenza solo per una modifica singola.
  2. Tutti i file sono salvati in un'unica posizione su disco. Quando i pacchetti vengono installati, i loro file sono hard-linkati da quella singola posizione, non consumando spazio su disco aggiuntivo. Ciò consente di condividere dipendenze della stessa versione tra progetti.

Di conseguenza, è possibile risparmiare molto spazio su disco proporzionalmente al numero di progetti e dipendenze, e avrai installazioni molto più veloci!

Creating a non-flat node_modules directory#

When installing dependencies with npm, all packages are hoisted to the root of the modules directory. As a result, source code has access to dependencies that are not added as dependencies to the project.

pnpm uses symlinks to add only the direct dependencies of the project into the root of the modules directory. If you'd like more details about the unique node_modules structure that pnpm creates and why it works fine with the Node.js ecosystem, read: