¿Cómo se compara npm
, bower
y volo
?
Los tres se pueden usar para instalar dependencias de JavaScript para un proyecto de IU. Entiendo que npm
es más específico del nodo.
Entonces, ¿cuándo usar qué?
npm
todavía se mantiene distante, pero bower
y volo
parecen ser la solución de exactamente el mismo problema, aunque yo no sea capaz de trazar una línea entre npm
y bower-volo
.
Respuestas:
Una descripción que mejor describe la diferencia entre npm y bower es: npm administra los módulos JavaScript llamados paquetes y Bower administra los componentes front-end (es decir, css, html y JavaScript) llamados componentes. npm también se usa para instalar bower. Aquí hay un artículo extenso sobre npm y bower (no cubre volo) que entra en muchos detalles.
fuente
cenador
Todavía es muy popular entre los desarrolladores front-end, a pesar de que tiene muy pocas características. Cada paquete front-end lo está usando. También hay una iniciativa para fusionar Bower en npm .
Bower está optimizado para el lado del cliente y solo admite árboles de dependencia planos, es decir, cada biblioteca debe usarse solo una vez (ya que es costoso enviar diferentes versiones de la misma biblioteca al cliente), y el usuario debe resolver las restricciones de dependencia .
Puede esperar encontrar cualquier cosa que esté relacionada con el front-end en el registro de Bower (
bower search <some keyword>
); en mi opinión, esa es la mayor ventaja de Bower en relación con otros administradores de paquetes.volo
Todavía no lo he usado durante más de 5 minutos en años. No lo sé, pero por lo que puedo ver , incluye alguna herramienta de compilación, que es muy familiar para los usuarios de Grunt.
npm
Sí, npm significa Node Package Manager. Pero hoy en día puedes usarlo para todo; la gente ya no solo hace
npm install
cosas y espera que funcionen solo en el entorno Node. Por ejemplo, hay muchos paquetes npm para Twitter Bootstrap .Npm está optimizado para el uso del lado del servidor, con un árbol de dependencias anidado. Cada dependencia puede tener sus propias dependencias, que pueden tener las suyas propias, etc. Esta versión de dependencia eliminada entra en conflicto ya que cada dependencia puede usar su propia versión, por ejemplo, Underscore. Sin embargo, la próxima versión 3 de npm aplanará el árbol de dependencias :
Algunas ventajas que veo al usar npm:
npm es el administrador de paquetes para JavaScript.
A partir de febrero de 2013, mi opinión era la siguiente. Por favor, no lo tenga más en cuenta.
npm
Es mejor seguir con él cuando está con un proyecto Node, también hay muy pocos proyectos disponibles para los navegadores ...
cenador
Bower es el chico pop en este momento. Tienen muchos proyectos bajo su capó, y a los encargados del proyecto les gusta mantenerlos actualizados en el registro de Bower ...
Es una pena que a veces esté un poco caído.
volo
No he probado el volo en más de 5 minutos desde entonces, pero por lo que pude ver parece ser más flexible que el bower.
Un punto negativo para volo es que sus proyectos están muy desactualizados.
fuente
Parecen estar resolviendo el mismo problema pero para entornos / mundos diferentes. NPM para nodejs y volo, bower para el navegador.
La verdad es que puede usar NPM también para administrar javascript y css para el navegador. No hay nada que te impida hacerlo. En ese sentido, usar NPM me parece más natural que tener que administrar dos herramientas diferentes para el mismo propósito.
Parece que Bower tiene más paquetes disponibles, al menos para los más populares. Pero pronto jQuery también estará disponible en NPM directamente y probablemente todas las demás bibliotecas seguirán la misma tendencia.
En mi opinión, dado que existen herramientas como browserify y webmake , que ayudan a usar módulos de nodos en el navegador, ya no hay una necesidad real de bower o volo , a menos que ofrezcan algo más para usted (un módulo en particular existe solo en sus registros).
Tanto Volo como Bower también son buenos, pero desde mi punto de vista, si ya estás usando NPM, podría ser mejor seguirlo.
Tenga en cuenta que puede usar NPM para administrar las dependencias de sus clientes incluso sin usar browserify o webmake . En la mayoría de los proyectos en los que estoy trabajando, después de instalar los módulos npm, ejecuto un script para implementarlos en la ubicación donde los usa mi aplicación cliente. A veces uso gruñido para concatenar ese archivo con otros archivos js y, a veces, lo hago referencia directamente desde los archivos de plantilla de mis aplicaciones web. En cualquier caso, esta es una preferencia personal. Otros podrían encontrar que Bower o Volo son más fáciles de usar, ya que se ajustan más naturalmente a sus flujos de trabajo.
fuente
yeoman
proyecto eligió crear un nuevo administrador de paquetes cuando ya teníamosnpm
? (Era maduro, famoso y rico en características) Este pensamiento me hace sentir que todavía me falta el punto real.npm
a favor de la simplicidad de la interfaz. Por lo tanto, para el desarrollo frontend.La gran ventaja de Bower sobre NPM es que su gestión de dependencia impone el uso de una única versión de un componente (mientras que NPM funciona al tener diferentes copias / versiones como subdependencias de diferentes módulos). Esto es MUY BUENO porque evita que el javascript del lado del cliente se hinche por la necesidad de incluir múltiples copias de un componente en diferentes versiones. La inclusión de múltiples copias de un módulo es fundamental para el funcionamiento de la gestión de dependencias de NPM, y por lo tanto, NPM es totalmente inadecuado para la gestión de paquetes del lado del cliente.
Una consecuencia de lo anterior es que los encargados de mantenimiento de paquetes y los consumidores tienen que ser más conscientes de mantener sus números de versión de dependencia para evitar conflictos, pero es un precio que vale la pena pagar. Y encuentro que los módulos NPM a menudo son descuidados en la emisión de versiones principales, menores y parches, por lo que la administración de dependencias NPM tampoco es exactamente una cama de rosas.
fuente
Sé que esto no está en el alcance de la pregunta, pero también hay otra alternativa. Jam JS - http://jamjs.org/ Una cosa interesante es que tiene capacidades de gruñido en jam:
Alguien debería crear otro administrador de paquetes y nombrarlo: yapm :)
fuente