pnpm vs npm: cosa cambia davvero

pnpm vs npm

pnpm vs npm: storage, lockfile, workspace, mappa dei comandi | We.Inc

Come pnpm e npm salvano i pacchetti, bloccano le versioni e gestiscono i monorepo, un traduttore consultabile di comandi da npm a pnpm e i passaggi esatti per migrare un progetto in sicurezza.

npm copia ogni pacchetto nella node_modules di ciascun progetto e li porta tutti allo stesso livello (hoisting). pnpm mantiene un unico store content-addressable su disco, crea hard link ai file da lì e mette solo le tue dipendenze dirette al primo livello di node_modules. Così risparmia spazio su disco e impedisce al codice di importare pacchetti che non ha mai dichiarato. La maggior parte dei comandi ha un equivalente diretto.

Le differenze principali

Entrambi gli strumenti leggono lo stesso package.json e installano dallo stesso registry, quindi la scelta riguarda la struttura, la velocità delle installazioni ripetute, gli strumenti per i monorepo e il rigore. Qui sotto trovi come ciascuno salva i pacchetti, un traduttore per i comandi che conosci già e i passaggi per spostare un progetto esistente da npm a pnpm.

Domande frequenti

pnpm è più veloce di npm?

pnpm spesso riusa i file già presenti nel suo store, il che aiuta le installazioni ripetute sulla stessa macchina. La velocità dipende dallo stato della cache, dalla rete e dalla dimensione del progetto, quindi misura entrambi sul tuo progetto invece di affidarti a un benchmark pubblicato.

Posso usare pnpm con un progetto che ha package-lock.json?

Sì. Esegui pnpm import per creare un pnpm-lock.yaml a partire da package-lock.json, npm-shrinkwrap.json o yarn.lock, poi elimina il vecchio lockfile e node_modules ed esegui pnpm install.

Perché la mia app non trova un modulo dopo il passaggio a pnpm?

Il tuo codice, o una dipendenza, importa un pacchetto che non è elencato nel proprio package.json. La struttura piatta di npm nascondeva quell'errore. Aggiungi il pacchetto mancante come dipendenza di ciò che lo importa.

pnpm ha bisogno di Node.js installato?

La documentazione di installazione di pnpm descrive pnpm 12 come un eseguibile nativo che non ha bisogno di Node.js per funzionare. Gli script del tuo progetto, ovviamente, hanno comunque bisogno di Node.js.

Quale dovrebbe usare un principiante?

npm, perché è incluso in Node.js e quasi tutti i tutorial lo usano. Passa a pnpm quando gestisci un monorepo, molti progetti sulla stessa macchina, o vuoi la struttura di node_modules più rigorosa.

Come ogni strumento salva i pacchetti

Workspace e monorepo

Passare un progetto da npm a pnpm

Passaggi di migrazione

pnpm import legge il lockfile di npm così mantieni le versioni che hai già testato. Esegui i test prima di fare commit.

Ogni cartella che corrisponde qui diventa un pacchetto del workspace. Metti il file nella radice del repository.

Dipendere da un pacchetto locale

workspace:* si risolve sempre nella copia locale di ui invece che in una versione del registry.

Traduttore di comandi da npm a pnpm

Scrivi un comando npm

npm install -D vite

Equivalente pnpm

Nessuna corrispondenza diretta. La maggior parte degli altri comandi npm mantiene lo stesso nome in pnpm.

Comandi npm e i loro equivalenti pnpm

Copia

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito