Passa al contenuto principale
Versione: Prossimo

pnpm vs npm

Struttura flat di npm​

npm utilizza un albero delle dipendenze flat partire dalla versione 3. Ciò porta a un aumento dello spazio su disco, con una node_modules confusionaria come effetto collaterale.

D'altra parte, pnpm gestisce node_modules utilizzando il collegamento fisico e il collegamento simbolico a un archivio globale indirizzabile al contenuto su disco. Questo porta i benefici di utilizzare molto meno spazio su disco, pur mantenendo node_modules pulita. C'è la documentazione sul layout dell'archivio se desideri saperne di più.

La cosa buona della struttura corretta di node_modules di pnpm è che "aiuta a evitare bug stupidi" rendendo impossibile l'uso di moduli che non sono specificati nel package.jsondel progetto.

Installazione​

pnpm non consente l'installazione di pacchetti senza salvarli in package.json. Se nessun parametro viene passato a pnpm add, i pacchetti vengono salvati come dipendenze regolari. Come con npm, --save-dev e --save-optional possono essere usati per installare pacchetti come dipendenze di sviluppo o opzionali.

Come conseguenza di questa limitazione, i progetti non avranno alcun pacchetto estraneo quando usano pnpm a meno che non rimuovano una dipendenza e la lascino orfana. Ecco il motivo per cui l'implementazione di pnpm del comando prune non consente di specificare i pacchetti da eliminare - rimuove SEMPRE tutti i pacchetti estranei e orfani.

Dipendenze nella cartella​

Le dipendenze nella cartella iniziano con il prefisso file: e puntano a una cartella nel filesystem. Come npm, pnpm collega simbolicamente queste dipendenze. A differenza di npm, pnpm non esegue l'installazione per le dipendenze dei file.

Ciò significa che se hai un pacchetto chiamato foo (<root>/foo) che ha bar@file:../bar come dipendenza, pnpm non eseguirà l'installazione per <root>/bar quando esegui pnpm install su foo.

Se hai bisogno di eseguire installazioni in più pacchetti contemporaneamente, ad nel caso di un monorepo, dovresti guardare la documentazione per pnpm -r.