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.jsonfile. Contiene tutte le dipendenze del progetto.
Poi
npm install
creerebbe una directory node_modulese scaricherà le dipendenze (che hai aggiunto al package.jsonfile) al suo interno.
Creerà anche un package-lock.jsonfile. 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_modulesdirectory 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.jsonfile. Quindi, installa le dipendenze con:
yarn install
node_modulesVerrà generata una cartella . Yarn genererà anche un file chiamato yarn.lock. Questo file ha lo stesso scopo del package-lock.jsonma è 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 .