Passa al contenuto principale
Versione: 8.x

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.