NPM / Bower / Composer - ¿diferencias?

102

¿Puede alguien explicarme la diferencia entre NPM, Bowery Composer.

Todos son administradores de paquetes, ¿correcto?

Pero, ¿cuándo debería usarse cada uno?

Además, cada uno parece tener un archivo json que lo acompaña, ¿esto almacena todos los paquetes que necesita para que puedan ser instalados por la línea cmd? ¿Por qué necesita este archivo?

panthro
fuente

Respuestas:

192

npmes el administrador de paquetes de nodejs. Por lo tanto, se dirige a entornos de nodejs, lo que generalmente significa proyectos de nodejs del lado del servidor o proyectos de línea de comandos (bower en sí es un paquete npm). Si va a hacer algo con nodejs, entonces usará npm.

boweres un administrador de paquetes que apunta a proyectos web (front-end). Necesita npm y nodejs para instalar bower y ejecutarlo, aunque los paquetes de bower no están diseñados específicamente para nodejs, sino para el entorno de "navegador".

composeres un administrador de dependencias que se enfoca en proyectos php. Si estás haciendo algo con Symfony (o php antiguo), probablemente este sea el camino a seguir.

Resumiendo:

  • haciendo nodo? tu haces npm
  • haciendo php? prueba el compositor
  • javascript de front-end? prueba bower

Y sí, los archivos "json" describen las dependencias y la información básica del paquete. Y sí, son necesarios.

Ahora, ¿qué pasa con los READMEs? :-)

[actualización, cuatro años después]

  • bowerestá en desuso y no debería usarse más para nuevos proyectos. En gran medida, se ha incluido en la gestión de dependencias de nodos (de su sitio web: "Mientras se mantiene Bower, recomendamos usar Yarn y Webpack o Parcel para proyectos front-end").
  • yarnsalió de la madera como un mejor npm(solucionando varios npmdefectos), y esto es realmente lo que debe usar ahora, ya que es el nuevo estándar de facto si está haciendo desarrollo de front-end o de nodos. package.jsonConsume lo mismo que npm y es casi totalmente compatible con él.
  • No lo usaría composeren este punto (porque no lo usaría php), aunque parece que todavía está vivo y es popular.
Deutz destrozado
fuente
6
¿Qué pasa con las aplicaciones frontend php +? Cual es la mejor opcion?
sompylasar
14
Depende de dónde traces la línea. ¿Está su MVC en js (y su php se reduce a WS)? Entonces probablemente use bower. ¿Está su MVC en php (por ejemplo, Symfony) y tiene un montón de js conectados a las vistas del lado del servidor? Entonces el compositor es probablemente tu mejor elección.
Mangled Deutz
21
La parte más molesta y contraproducente es cuando estás trabajando en bibliotecas donde, algunas solo usan bower; algunos solo usan composer y otros solo usan npm. Sería bueno encontrar un solo administrador de paquetes que con un solo comando maneje todos estos administradores de paquetes. Debería llamarse Inception.
Angel S. Moreno
29
Creo que @ AngelS.Moreno tiene razón. Hay demasiados, hagamos un cuarto. :)
Eric
1
@ AngelS.Moreno tienes razón e incluso iría más allá de detenerme en los instaladores y administradores de dependencias. Hay demasiados de todo. Demasiadas bibliotecas JS que hacen lo mismo, demasiados marcos PHP, etc. Si la gente pudiera trabajar en colaboración en una cosa, cambiaría la vida de muchos de nosotros.
JG Estiot