Comment comparez-vous npm
, bower
et volo
?
Les trois peuvent être utilisés pour installer des dépendances JavaScript pour un projet d'interface utilisateur. Je comprends que npm
c'est plus spécifique au nœud.
Alors, quand utiliser quoi?
npm
se tient encore lointaine, mais bower
et volo
semblent être résoudre exactement le même problème, même si je ne suis pas en mesure de tracer une ligne entre npm
et bower-volo
.
Réponses:
Une description qui décrit le mieux la différence entre npm et bower est la suivante: npm gère les modules JavaScript appelés packages et Bower gère les composants frontaux (css, html et JavaScript) appelés composants. npm est également utilisé pour installer bower. Voici un article complet sur npm et bower (ne couvre pas le volo), il va dans beaucoup de détails.
la source
tonnelle
Il est toujours très populaire parmi les développeurs front-end, même s'il a très peu de fonctionnalités. Chaque package frontal l'utilise. Il existe également une initiative visant à fusionner bower dans npm .
Bower est optimisé pour le côté client et ne prend en charge que les arbres de dépendances plats, c'est-à-dire que chaque bibliothèque ne doit être utilisée qu'une seule fois (car il est coûteux de livrer différentes versions de la même bibliothèque au client), et les contraintes de dépendance doivent être résolues par l'utilisateur .
Vous pouvez vous attendre à trouver tout ce qui est lié au front-end dans le registre de bower (
bower search <some keyword>
) - à mon avis, c'est le plus grand avantage de bower par rapport aux autres gestionnaires de paquets.volo
Je ne l'ai toujours pas utilisé depuis plus de 5 minutes depuis des années. Je ne sais pas à ce sujet, mais d'après ce que je peux voir il inclut un outil de construction, qui est très familier aux utilisateurs de Grunt.
npm
Oui, npm signifie Node Package Manager. Mais de nos jours, vous pouvez l'utiliser pour tout; les gens ne font plus que des
npm install
choses et s'attendent à ce qu'ils fonctionnent uniquement dans l'environnement Node. Par exemple, il existe de nombreux packages npm pour Twitter Bootstrap .Npm est optimisé pour une utilisation côté serveur, avec une arborescence de dépendances imbriquée. Chaque dépendance peut avoir ses propres dépendances qui peuvent avoir les leurs, et ainsi de suite. Cette version éliminée des conflits de dépendance car chaque dépendance peut utiliser sa propre version, par exemple Underscore. Cependant, la prochaine version 3 de npm aplatira l'arborescence des dépendances :
Quelques avantages que je vois en utilisant npm:
npm est le gestionnaire de packages pour JavaScript.
En février 2013, mon opinion était la suivante. Veuillez ne plus en tenir compte.
npm
Il vaut mieux s'y tenir lorsque vous êtes avec un projet Node, il y a très peu de projets qui sont également disponibles pour les navigateurs ...
tonnelle
Bower est le gars de la pop en ce moment. Ils ont beaucoup de projets sous leur capot, et les responsables de projet aiment les tenir à jour dans le registre des bower ...
C'est dommage qu'il soit parfois un peu bogué.
volo
Je n'ai pas essayé volo depuis plus de 5 minutes depuis, mais d'après ce que j'ai pu voir, il semble plus flexible que bower.
Un point négatif pour volo est que leurs projets sont très dépassés.
la source
Ils semblent résoudre le même problème mais pour des environnements / mondes différents. NPM pour nodejs et volo, bower pour le navigateur.
La vérité est que vous pouvez également utiliser NPM pour gérer javascript et css pour le navigateur. Rien ne vous empêche de le faire. En ce sens, utiliser NPM me semble plus naturel que de devoir gérer deux outils différents dans le même but.
Il semble que bower ait plus de packages disponibles, du moins pour les plus populaires. Mais bientôt jQuery sera également disponible directement dans NPM et probablement toutes les autres bibliothèques suivront la même tendance.
À mon avis, comme il existe des outils comme browserify et webmake , qui aident à utiliser des modules de nœuds dans le navigateur, il n'y a plus vraiment besoin de bower ou de volo , à moins qu'ils n'offrent autre chose pour vous (un module particulier existant uniquement dans leurs registres).
Les deux Volo et Bower sont bons aussi, mais de mon point de vue, si vous utilisez déjà NPM, il pourrait être préférable de s'y tenir.
Veuillez noter que vous pouvez utiliser NPM pour gérer vos dépendances client même sans utiliser browserify ou webmake . Dans la plupart des projets sur lesquels je travaille, une fois les modules npm installés, j'exécute un script pour les déployer à l'emplacement où mon application cliente les utilise. Parfois, j'utilise grunt pour concaténer ce fichier avec d'autres fichiers js et parfois je le référence directement à partir des fichiers de modèle de mes applications Web. Dans tous les cas, c'est une préférence personnelle. D'autres pourraient trouver Bower ou Volo plus faciles à utiliser car ils s'intègrent plus naturellement dans leurs flux de travail.
la source
yeoman
Project a choisi de créer un nouveau gestionnaire de packages alors que nous avions déjànpm
? (C'était mature, célèbre et riche en fonctionnalités) Cette pensée me fait sentir que je manque encore le point réel.npm
en faveur de la simplicité du frontend. Par conséquent pour le développement frontend.Le grand avantage de Bower par rapport à NPM est que sa gestion des dépendances impose l'utilisation d'une seule version d'un composant (alors que NPM fonctionne en ayant différentes copies / versions en tant que sous-dépendances de différents modules). C'est une très bonne chose chose car cela empêche votre javascript côté client de devenir gonflé en ayant besoin d'inclure plusieurs copies d'un composant dans différentes versions. L'inclusion de plusieurs copies d'un module est essentielle au fonctionnement de la gestion des dépendances de NPM, et NPM est donc totalement inadapté à la gestion des packages côté client.
Une conséquence de ce qui précède est que les mainteneurs et les consommateurs de paquets bower doivent être plus attentifs à maintenir leurs numéros de version de dépendance pour éviter les conflits, mais c'est un prix à payer. Et je trouve que les modules NPM sont souvent bâclés dans leur publication de versions majeures, mineures et de correctifs, de sorte que la gestion des dépendances NPM n'est pas non plus un lit de roses.
la source
Je sais que cela ne fait pas partie de la portée de la question, mais il existe également une autre alternative. Jam JS - http://jamjs.org/ Une chose intéressante est qu'il a des capacités de grognement dans la confiture:
Quelqu'un devrait créer un autre gestionnaire de paquets et le nommer: yapm :)
la source