NPM / Bower / Composer - Unterschiede?

102

Kann mir jemand den Unterschied zwischen erklären NPM, Bowerund Composer.

Sie sind alle Paketmanager - richtig?

Aber wann sollte jeder verwendet werden?

Außerdem scheint jedem eine JSON-Datei beigefügt zu sein. Speichert diese alle benötigten Pakete, damit sie per Cmd-Zeile installiert werden können? Warum brauchen Sie diese Datei?

panthro
quelle

Antworten:

192

npmist der Paketmanager von nodejs. Es zielt daher auf NodeJS-Umgebungen ab, was normalerweise serverseitige NodeJS-Projekte oder Befehlszeilenprojekte bedeutet (Bower selbst ist ein npm-Paket). Wenn Sie irgendetwas mit nodejs machen wollen, dann werden Sie npm verwenden.

bowerist ein Paketmanager, der auf (Front-End-) Webprojekte abzielt. Sie benötigen npm und nodejs, um bower zu installieren und auszuführen. Bower-Pakete sind jedoch nicht speziell für nodejs gedacht, sondern für die "Browser" -Umgebung.

composerist ein Abhängigkeitsmanager, der auf PHP-Projekte abzielt. Wenn Sie etwas mit Symfony (oder einfachem alten PHP) machen, ist dies wahrscheinlich der richtige Weg

Zusammenfassend:

  • Knoten machen? du machst npm
  • PHP machen? versuchen Sie es mit einem Komponisten
  • Front-End-Javascript? versuchen Sie Laube

Und ja, die "json" -Dateien beschreiben grundlegende Paketinformationen und Abhängigkeiten. Und ja, sie werden gebraucht.

Was ist nun mit den READMEs? :-)

[Update, vier Jahre später]

  • bowerist veraltet und sollte nicht mehr für neue Projekte verwendet werden. Es wurde größtenteils in das Knotenabhängigkeitsmanagement aufgenommen (von der Website: "Während Bower beibehalten wird, empfehlen wir die Verwendung von Garn und Webpack oder Paket für Front-End-Projekte").
  • yarnkam als besseres aus dem Holz npm(Behebung mehrerer npmFehler), und dies ist wirklich das, was Sie jetzt verwenden sollten, da es der neue De-facto-Standard ist, wenn Sie Front-End- oder Knotenentwicklung durchführen. Es verbraucht das gleiche package.jsonwie npm und ist fast vollständig damit kompatibel.
  • Ich würde es composeran dieser Stelle nicht verwenden (weil ich es nicht verwenden würde php), obwohl es immer noch lebendig und beliebt zu sein scheint
Verstümmelter Deutz
quelle
6
Was ist mit PHP + Frontent-Anwendungen? Was ist die beste Option?
Sompylasar
14
Hängt davon ab, wo Sie die Linie ziehen. Ist Ihre MVC in js (und Ihre PHP ist auf eine WS reduziert)? Dann wahrscheinlich Laube benutzen. Ist Ihre MVC in PHP (z. B. Symfony) und Sie haben eine Reihe von Js in Ihre Server-Seitenansichten eingebunden? Dann ist der Komponist wahrscheinlich die beste Wahl.
Verstümmelt Deutz
21
Der nervigste und kontraproduktivste Teil ist, wenn Sie an Bibliotheken arbeiten, in denen einige nur Bower verwenden. Einige verwenden nur Komponisten und andere nur npm. Es wäre schön, einen einzigen Paketmanager zu finden, der mit einem einzigen Befehl alle diese Paketmanager handhabt. Es sollte Inception genannt werden.
Angel S. Moreno
29
Ich denke @ AngelS.Moreno ist richtig. Es gibt zu viele Lasst uns einen 4. machen. :)
Eric
1
@ AngelS.Moreno Sie haben Recht und ich würde sogar noch weiter gehen, als nur bei Installateuren und Abhängigkeitsmanagern anzuhalten. Es gibt zu viele von allem. Zu viele JS-Bibliotheken, die dasselbe tun, zu viele PHP-Frameworks und so weiter. Wenn die Menschen nur gemeinsam an einer Sache arbeiten könnten, würde dies für viele von uns das Leben verändern.
JG Estiot