NPM / Bower / Composer - differenze?


102

Qualcuno può spiegarmi la differenza tra NPM, Bowere Composer.

Sono tutti gestori di pacchetti, giusto?

Ma quando dovrebbero essere utilizzati ciascuno?

Inoltre, ognuno sembra avere un file json che lo accompagna, questo memorizza tutti i pacchetti necessari in modo che possano essere installati dalla riga cmd? Perché hai bisogno di questo file?

Risposte:


192

npmè il gestore di pacchetti nodejs. Si rivolge quindi agli ambienti nodejs, che di solito significa progetti nodejs lato server o progetti da riga di comando (bower stesso è un pacchetto npm). Se hai intenzione di fare qualcosa con nodejs, allora userai npm.

bowerè un gestore di pacchetti che mira a progetti web (front-end). Hai bisogno di npm e nodejs per installare bower ed eseguirlo, sebbene i pacchetti bower non siano pensati specificamente per nodejs, ma piuttosto per l'ambiente "browser".

composerè un gestore delle dipendenze che prende di mira i progetti php. Se stai facendo qualcosa con symfony (o semplicemente con il vecchio php), questa è probabilmente la strada da percorrere

Riassumendo:

  • facendo nodo? fai npm
  • facendo php? prova il compositore
  • javascript front-end? prova pergolato

E sì, i file "json" descrivono le informazioni di base sul pacchetto e le dipendenze. E sì, sono necessari.

Ora, che dire dei README? :-)

[aggiornamento, quattro anni dopo]

  • bowerè deprecato e non dovrebbe essere più utilizzato per nuovi progetti. In larga misura, è stato incluso nella gestione delle dipendenze dei nodi (dal loro sito web: "Mentre Bower è mantenuto, si consiglia di utilizzare Yarn e Webpack o Parcel per i progetti front-end").
  • yarnè uscito dal bosco come un migliore npm(risolvendo molti npmdifetti), e questo è davvero quello che dovresti usare ora, poiché è il nuovo standard de facto se stai facendo sviluppo front-end o nodo. Lo fa consumare la stessa package.jsoncome NPM, ed è quasi del tutto compatibile con esso.
  • Non lo userei composera questo punto (perché non lo userei php), anche se sembra essere ancora vivo e popolare

6
E le applicazioni php + frontent? Qual è l'opzione migliore?
sompylasar

14
Dipende da dove tracci la linea. Il tuo MVC è in js (e il tuo php è ridotto a un WS)? Quindi probabilmente usa pergola. Il tuo MVC è in php (diciamo symfony) e hai un sacco di js agganciati alle viste lato server? Allora il compositore è probabilmente la scelta migliore.
Mangled Deutz

21
La parte più fastidiosa e controproducente è quando si lavora su librerie dove alcune usano solo pergamena; alcuni usano solo composer e altri ancora usano solo npm. Sarebbe bello trovare un unico gestore di pacchetti che con un solo comando gestisca tutti questi gestori di pacchetti. Dovrebbe essere chiamato Inception.
Angel S. Moreno

29
Penso che @ AngelS.Moreno abbia ragione. Ce ne sono troppi, facciamo un quarto. :)
Eric

1
@ AngelS.Moreno hai ragione e andrei anche oltre il semplice arresto degli installatori e dei gestori delle dipendenze. Ce ne sono troppe di tutto. Troppe librerie JS che fanno lo stesso, troppi framework PHP e così via. Se le persone potessero lavorare in modo collaborativo su una cosa, cambierebbe la vita per molti di noi.
JG Estiot
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.