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.