update specific check javascript node.js npm bower volojs

specific - Administración de dependencias de JavaScript: npm vs. bower vs. volo



yarn (5)

¿Cómo se compara npm , npm 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 para un nodo.

Entonces, ¿cuándo usar qué?

npm aún se mantiene distante, pero bower y volo parecen resolver exactamente el mismo problema, aunque no puedo trazar una línea entre npm y npm bower-volo .


cenador

Todavía es muy popular entre los desarrolladores front-end, a pesar de que tiene muy pocas características. Cada paquete de front-end lo está usando. También hay una iniciativa para unir bower en npm .

Bower está optimizado para el lado del cliente y solo admite árboles de dependencia planos, es decir, cada biblioteca debe utilizarse solo una vez (dado que es costoso enviar diferentes versiones de la misma biblioteca al cliente), y el usuario debe resolver las restricciones de dependencia. .

Puede esperar encontrar todo lo relacionado 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 gestores de paquetes.

volo

Todavía no lo he usado por 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; las personas ya no solo npm install y esperan que trabajen solo en el entorno Nodo. Por ejemplo, hay muchos paquetes npm para Twitter Bootstrap .

Npm está optimizado para el uso del lado del servidor, con un árbol de dependencia anidado. Cada dependencia puede tener sus propias dependencias que pueden tener las suyas propias, y así sucesivamente. Esto eliminó los conflictos de versiones de dependencia ya que cada dependencia puede usar su propia versión de, por ejemplo, Underscore. Sin embargo, la próxima versión npm 3 aplanará el árbol de dependencias :

Con npm @ 3, su directorio node_modules será mucho más plano. Todas sus dependencias y la mayoría de sus subdependencias (y (sub) + dependencias) se ubicarán una junto a la otra en el nivel superior. Solo cuando haya conflictos, los módulos se instalarán a niveles más profundos. Esto debería facilitar las cosas para los usuarios de Windows.

Algunas ventajas que veo al usar npm:

  • Es utilizado por todos los otros gestores de paquetes (componente, bower, volo, JSPM, etc.);
  • Permite el uso de scripts de compilación;
  • Hay muchas herramientas disponibles para introspectar paquetes basados ​​en npm

npm es el administrador de paquetes para JavaScript.

A partir de febrero de 2013, mi opinión fue la siguiente. Por favor, no lo tengas en cuenta nunca más.

npm

Es mejor seguir con esto cuando estás con un proyecto Node, hay muy pocos proyectos disponibles para los navegadores también ...

cenador

Bower es el chico pop en este momento. Tienen muchos proyectos bajo su capó, y los mantenedores del proyecto les gusta mantenerlos actualizados en el registro de bower ...

Es una pena que a veces sea un poco problemático.

volo

No he probado Volo durante más de 5 minutos desde entonces, pero por lo que pude ver, parece ser más flexible que Bower.

Un punto negativo para volo es que sus proyectos están muy desactualizados.


La gran ventaja de Bower sobre NPM es que su administración de dependencias impone el uso de una sola versión de un componente (mientras que NPM funciona teniendo diferentes copias / versiones como subdependencias de diferentes módulos). Esto es MUY BUENO porque evita que su javascript del lado del cliente se hinche debido a la necesidad de incluir varias copias de un componente en diferentes versiones. La inclusión de copias múltiples de un módulo es fundamental para el funcionamiento de la gestión de dependencias de NPM y, por lo tanto, NPM es totalmente inadecuada para la administración de paquetes del lado del cliente.

Una consecuencia de lo anterior es que los mantenedores de paquetes de bower 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 de NPM son a menudo descuidados en la publicación de versiones mayores, menores y de parches, por lo que la administración de dependencias de NPM tampoco es exactamente un colchón de rosas.


Parecen resolver el mismo problema pero para diferentes entornos / mundos. NPM para nodejs y volo, bower para el navegador.

La verdad es que puedes usar NPM también para administrar javascript y css para el navegador. No hay nada que te impida hacerlo. En ese sentido, usar NPM es más natural para mí 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 existe una necesidad real de bower o volo , a menos que ofrezcan algo más para usted (un módulo particular que 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, sería mejor que lo sigas.

Tenga en cuenta que puede usar NPM para administrar las dependencias de su cliente incluso sin utilizar browserify o webmake . En la mayoría de los proyectos en los que estoy trabajando, después de instalar los módulos npm, ejecuto una secuencia de comandos para implementarlos en la ubicación donde los utiliza mi aplicación cliente. A veces uso ronco 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 adaptan de forma más natural a sus flujos de trabajo.


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 grunt en jam:

jam compile output.js

Alguien debería hacer otro administrador de paquetes y nombrarlo: yapm :)


Una descripción que mejor describe la diferencia entre npm y bower es: npm administra los módulos de JavaScript llamados paquetes y Bower administra los componentes de los componentes de front-end (es decir, css, html y JavaScript). 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.