Cercando di dare una panoramica migliore per i principianti.
npm è stato storicamente (2010) il gestore di pacchetti più popolare per JavaScript. Se vuoi usarlo per gestire le dipendenze del tuo progetto, puoi digitare il seguente comando:
npm init
Questo genererà un package.json
file. Contiene tutte le dipendenze del progetto.
Poi
npm install
creerebbe una directory node_modules
e scaricherà le dipendenze (che hai aggiunto al package.json
file) al suo interno.
Creerà anche un package-lock.json
file. Questo file viene utilizzato per descrivere l'albero delle dipendenze che è stato generato. Permette agli sviluppatori di installare esattamente le stesse dipendenze. Ad esempio, potresti immaginare uno sviluppatore che aggiorna una dipendenza a v2 e poi v3 mentre un altro aggiorna direttamente a v3.
npm installa le dipendenze in modo non deterministico, il che significa che i due sviluppatori potrebbero avere una node_modules
directory diversa con conseguenti comportamenti diversi . ** npm ha sofferto di una cattiva reputazione come ad esempio nel febbraio 2018: è stato scoperto un problema nella versione 5.7.0 in cui l'esecuzione di sudo npm su sistemi Linux cambiava la proprietà dei file di sistema, interrompendo definitivamente il sistema operativo.
Per risolvere questi problemi e altri, Facebook ha introdotto un nuovo gestore di pacchetti (2016): filati un gestore di pacchetti più veloce, più sicuro e più affidabile per JavaScript.
Puoi aggiungere Yarn a un progetto digitando:
yarn init
Questo creerà un package.json
file. Quindi, installa le dipendenze con:
yarn install
node_modules
Verrà generata una cartella . Yarn genererà anche un file chiamato yarn.lock
. Questo file ha lo stesso scopo del package-lock.json
ma è invece costruito utilizzando un algoritmo deterministico e affidabile, portando così a build coerenti.
Se hai avviato un progetto con npm , puoi effettivamente migrare facilmente a Yarn . il filato consumerà lo stesso package.json
. Vedere Migrazione da npm per maggiori dettagli.
Tuttavia, npm è stato migliorato con ogni nuova versione e alcuni progetti utilizzano ancora npm su filato .