NPM / Bower / Composer - différences?

102

Quelqu'un peut -il me expliquer la différence entre NPM, Boweret Composer.

Ce sont tous des gestionnaires de paquets - n'est-ce pas?

Mais quand faut-il utiliser chacun d'eux?

En outre, chacun semble avoir un fichier json qui l'accompagne, est-ce que cela stocke tous les packages dont vous avez besoin pour qu'ils puissent être installés par ligne cmd? Pourquoi avez-vous besoin de ce fichier?

panthro
la source

Réponses:

192

npmest le gestionnaire de paquets nodejs. Il cible donc les environnements nodejs, ce qui signifie généralement des projets nodejs côté serveur ou des projets en ligne de commande (bower lui-même est un package npm). Si vous comptez faire quelque chose avec nodejs, vous allez utiliser npm.

bowerest un gestionnaire de packages qui vise les projets web (front-end). Vous avez besoin de npm et nodejs pour installer bower et l'exécuter, bien que les packages bower ne soient pas spécifiquement destinés à nodejs, mais plutôt à l'environnement "browser".

composerest un gestionnaire de dépendances qui cible les projets php. Si vous faites quelque chose avec symfony (ou tout simplement l'ancien php), c'est probablement la voie à suivre

Pour résumer:

  • faire un nœud? vous faites npm
  • faire php? essayez le compositeur
  • javascript frontal? essayez bower

Et oui, les fichiers "json" décrivent les informations de base sur les packages et les dépendances. Et oui, ils sont nécessaires.

Maintenant, qu'en est-il des README? :-)

[mise à jour, quatre ans plus tard]

  • bowerest obsolète et ne doit plus être utilisé pour de nouveaux projets. Dans une large mesure, il a été intégré à la gestion des dépendances des nœuds (à partir de leur site Web: «Bien que Bower soit maintenu, nous vous recommandons d'utiliser Yarn et Webpack ou Parcel pour les projets frontaux»).
  • yarnest sorti du bois comme meilleur npm(correction de plusieurs npmdéfauts), et c'est vraiment ce que vous devriez utiliser maintenant, car c'est le nouveau standard de facto si vous faites du développement front-end ou de nœuds. Il consomme la même chose package.jsonque npm et est presque entièrement compatible avec lui.
  • Je n'utiliserais pas composerà ce stade (car je n'utiliserais pas php), bien qu'il semble toujours vivant et populaire
Mangled Deutz
la source
6
Qu'en est-il des applications frontales php +? Quelle est la meilleure option?
sompylasar
14
Dépend de l'endroit où vous tracez la ligne. Votre MVC est-il en js (et votre php est réduit à un WS)? Ensuite, utilisez probablement un bower. Votre MVC est-il en php (disons, symfony), et vous avez un tas de js accrochés à vos vues côté serveur? Alors le compositeur est probablement votre meilleur choix.
Mangled Deutz
21
La partie la plus ennuyeuse et la plus contre-productive est lorsque vous travaillez sur des bibliothèques où certaines n'utilisent que bower; certains n'utilisent que composer et d'autres encore n'utilisent que npm. Ce serait bien de trouver un seul gestionnaire de paquets qui, avec une seule commande, gère tous ces gestionnaires de paquets. Cela devrait s'appeler Inception.
Angel
29
Je pense que @ AngelS.Moreno a raison. Il y en a trop, faisons un 4e. :)
Eric
1
@ AngelS.Moreno vous avez raison et j'irais même plus loin que de m'arrêter aux installateurs et aux gestionnaires de dépendances. Il y a trop de tout. Trop de bibliothèques JS qui font de même, trop de Frameworks PHP et ainsi de suite. Si les gens pouvaient simplement travailler en collaboration sur une chose, cela changerait la vie de beaucoup d'entre nous.
JG Estiot