Differenze tra NPM e Bower

Logo NPM e Bower

Spesso viene fatta confusione tra NPM e Bower ma lo scopo per cui sono nati è molto diverso. NPM è nato per maneggiare i moduli di Node.js, di conseguenza è una tecnologia utilizzata principalmente lato back-end (che può essere utilizzata lato front-end tramite browerify). Bower invece è nato direttamente per gli sviluppatori front-end e server per consentire di scaricare i pacchetti utilizzati nel proprio progetto e tenerli sempre aggiornati.

Lato front-end NPM e Bower possono avere uno scopo comune ma si differenziano per l’albero delle dipendenze che utilizzano:

  1. In Bower l’albero delle dipendenze è piatto, tutti i pacchetti necessari al progetto sono definiti in un unico file JSON (vedi qui per un esempio);
  2. In NPM l’albero delle dipendenze è innestato, ciò significa che ogni dipendenza può avere le proprie singole dipendenze. Se da un lato avere una struttura innestata è utile in quanto consente di non doversi preoccupare dei possibili conflitti (ogni libreria ha i propri file), dall’altro lato si avranno più volte gli stessi file.

Utilizzando NPM lato front-end si rischierebbe di far scaricare più volte gli stessi file (ad es. più versioni di jQuery per ogni dipendenza richiesta) aumentando notevolmente il tempo di caricamento della pagina. Per queste ragioni, lato fornt-end, si preferisce utilizzare Bower per scaricare e tenere aggiornati i pacchetti e si sfruttano alcuni strumenti di sviluppo messi a disposizione da NPM come: Yeoman, Grunt, Gulp, JSHint, CoffeeScript, ecc. Si può affermare che Bower introduce la possibilità di sfruttare tutti i vantaggi di NPM senza doversi preoccupare della gestione dei pacchetti in un ambiente Node.js in quando l’applicativo sarà eseguito all’interno di un browser.

Pubblicato in Front-end, JavaScript Taggato con: , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*