NPM / Bower / Composer - różnice?

102

Czy ktoś może mi wyjaśnić różnicę między NPM, Boweri Composer.

Wszyscy są menedżerami pakietów - prawda?

Ale kiedy należy użyć każdego z nich?

Ponadto wydaje się, że każdy z nich ma dołączony plik json. Czy w tym miejscu są przechowywane wszystkie potrzebne pakiety, aby można je było zainstalować za pomocą wiersza cmd? Dlaczego potrzebujesz tego pliku?

panthro
źródło

Odpowiedzi:

192

npmto menedżer pakietów nodejs. Dlatego jest skierowany do środowisk nodejs, co zwykle oznacza projekty nodejs po stronie serwera lub projekty wiersza poleceń (sam bower jest pakietem npm). Jeśli masz zamiar robić cokolwiek z nodejs, to użyjesz npm.

bowerjest menedżerem pakietów, którego celem są (front-end) projekty internetowe. Potrzebujesz npm i nodejs, aby zainstalować bower i go uruchomić, chociaż pakiety bower nie są przeznaczone specjalnie dla nodejs, ale raczej dla środowiska "przeglądarki".

composerto menedżer zależności, który jest przeznaczony dla projektów php. Jeśli robisz coś z symfony (lub zwykłym starym php), prawdopodobnie jest to dobry sposób

Podsumowując:

  • robi węzeł? robisz npm
  • robisz php? spróbuj kompozytora
  • front-end javascript? spróbuj altany

I tak, pliki „json” opisują podstawowe informacje o pakiecie i zależności. I tak, są potrzebne.

A co z README? :-)

[aktualizacja, cztery lata później]

  • bowerjest przestarzały i nie powinien być już używany w nowych projektach. W dużej mierze został on podporządkowany zarządzaniu zależnościami węzłów (z ich strony internetowej: „Podczas gdy Bower jest utrzymywany, zalecamy używanie Yarn i Webpack lub Parcel w projektach front-end”).
  • yarnwyszedł z drewna jako lepszy npm(naprawienie kilku npmbłędów) i naprawdę powinieneś teraz użyć tego, ponieważ jest to nowy de facto standard, jeśli tworzysz front-end lub node. Zużywa to samo package.jsonco npm i jest z nim prawie całkowicie kompatybilny.
  • Nie używałbym composerw tym momencie (bo bym nie używał php), chociaż wydaje się, że wciąż jest żywy i popularny
Mangled Deutz
źródło
6
A co z aplikacjami frontowymi php +? Jaka jest najlepsza opcja?
sompylasar
14
Zależy, gdzie narysujesz linię. Czy twój MVC jest w js (a twoje php jest zredukowane do WS)? Następnie prawdopodobnie użyj altany. Czy Twój MVC jest w php (powiedzmy, symfony) i masz kilka plików js podłączonych do widoków po stronie serwera? Wtedy prawdopodobnie najlepszym wyborem będzie kompozytor.
Mangled Deutz
21
Najbardziej irytujące i szkodliwe jest to, gdy pracujesz w bibliotekach, w których niektóre używają tylko bower; niektórzy używają tylko kompozytora, a jeszcze inni używają tylko npm. Byłoby miło znaleźć jednego menedżera pakietów, który za pomocą jednego polecenia obsługuje wszystkie te menedżery pakietów. Powinien nazywać się Incepcja.
Angel S. Moreno
29
Myślę, że @ AngelS.Moreno ma rację. Jest zbyt wielu zróbmy czwarty. :)
Eric
1
@ AngelS.Moreno masz rację i posunąłbym się nawet dalej niż tylko zatrzymywanie się u instalatorów i menedżerów zależności. Jest wszystkiego za dużo. Zbyt wiele bibliotek JS, które robią to samo, zbyt wiele frameworków PHP i tak dalej. Gdyby ludzie mogli po prostu pracować wspólnie nad jedną rzeczą, zmieniłoby to życie wielu z nas.
JG Estiot