Passa al contenuto principale
Versione: Prossimo

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, la dipendenza sarà memorizzata in un archivio indirizzabile al contenuto, quindi:

  1. Se dipendi da versioni diverse della dipendenza, solo i file diversi sono aggiunti all'archivio. 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 dell'archivio, invece di clonare l'intera dipendenza solo per una modifica singola.
  2. Tutti i file sono salvati in un'unica posizione sul disco. Quando i pacchetti vengono installati, i loro file sono collegati fisicamente da quella singola posizione, senza consumare 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!

Creazione di una cartella node_modules non flat

Quando si installano le dipendenze con npm o Yarn Classic, tutti i pacchetti vengono agganciati alla radice della cartella dei moduli. Di conseguenza, il codice sorgente ha accesso a dipendenze non aggiunte come dipendenze al progetto.

Per impostazione predefinita, pnpm utilizza collegamenti simbolici per aggiungere solo le dipendenze dirette del progetto nella root della cartella dei moduli. Se desideri maggiori dettagli sulla struttura unica di node_modules che pnpm crea e perché funziona bene con l'ecosistema Node.js, leggi:

tip

Se i tuoi strumenti non funzionano bene con i collegamenti simbolici, puoi comunque utilizzare pnpm e impostare l'impostazione node-linker su hoisted. Questo indicherà a pnpm di creare una cartella node_modules simile a quelle create da npm e Yarn Classic.