Jak można porównać npm
, bower
i volo
?
Wszystkie trzy mogą służyć do instalowania zależności JavaScript dla projektu interfejsu użytkownika. Rozumiem, że npm
jest bardziej specyficzny dla węzła.
Kiedy więc czego użyć?
npm
stoi odległe, ale bower
i volo
wydają się być rozwiązywaniu dokładnie ten sam problem, choć nie jestem w stanie narysować linię pomiędzy npm
i bower-volo
.
Odpowiedzi:
Opis najlepiej opisujący różnicę między npm a bower to: npm zarządza modułami JavaScript zwanymi pakietami, a Bower zarządza komponentami front-end (np. Css, html i JavaScript) zwanymi komponentami. npm służy również do montażu altany. Tutaj jest obszerny artykuł na temat npm i altany (nie obejmuje volo), zawiera wiele szczegółów.
źródło
altana
Jest nadal bardzo popularny wśród programistów front-end, mimo że ma bardzo niewiele funkcji. Używa go każdy pakiet front-end. Istnieje również inicjatywa połączenia altany z npm .
Bower jest zoptymalizowany pod kątem klienta i obsługuje tylko płaskie drzewa zależności, tj. Każda biblioteka musi być używana tylko raz (ponieważ wysyłanie różnych wersji tej samej biblioteki do klienta jest kosztowne), a ograniczenia zależności muszą zostać rozwiązane przez użytkownika .
Możesz spodziewać się, że w rejestrze bower (
bower search <some keyword>
) znajdziesz wszystko, co jest związane z front-endem - moim zdaniem jest to największa zaleta bower w stosunku do innych menedżerów pakietów.volo
Nadal nie używałem go od ponad 5 minut od lat. Nie wiem o tym, ale z tego, co widzę , zawiera pewne narzędzie do budowania, które jest bardzo dobrze znane użytkownikom Grunt.
npm
Tak, npm to skrót od Node Package Manager. Ale w dzisiejszych czasach możesz go używać do wszystkiego; ludzie nie tylko zajmują
npm install
się rzeczami i oczekują, że będą działać tylko w środowisku Node. Na przykład istnieje wiele pakietów npm dla Twitter Bootstrap .Npm jest zoptymalizowany pod kątem użycia po stronie serwera, z zagnieżdżonym drzewem zależności. Każda zależność może mieć własne zależności, które mogą mieć własne i tak dalej. To wyeliminowało konflikty wersji zależności, ponieważ każda zależność może używać własnej wersji, np. Podkreślenia. Jednak nadchodząca wersja 3 npm spłaszczy drzewo zależności :
Niektóre zalety, które widzę przy korzystaniu z npm:
npm to menedżer pakietów dla JavaScript.
Od lutego 2013 roku moja opinia była następująca. Proszę, nie bierz tego już pod uwagę.
npm
Lepiej trzymać się tego, gdy jesteś z projektem Node, jest bardzo niewiele projektów, które są również dostępne dla przeglądarek ...
altana
Bower jest teraz popowym facetem. Mają wiele projektów pod maską, a opiekunowie projektów lubią aktualizować je w rejestrze altan ...
Szkoda, że czasami jest trochę wadliwy.
volo
Od tamtej pory nie próbowałem volo dłużej niż 5 minut, ale z tego co widziałem wygląda na bardziej elastyczne niż altana.
Wadą volo jest to, że ich projekty są bardzo przestarzałe.
źródło
Wydaje się, że rozwiązują ten sam problem, ale dla różnych środowisk / światów. NPM dla nodejs i volo, bower dla przeglądarki.
Prawda jest taka, że NPM można używać również do zarządzania javascript i css w przeglądarce. Nic nie stoi na przeszkodzie, abyś to zrobił. W tym sensie używanie NPM wydaje mi się bardziej naturalne niż konieczność zarządzania dwoma różnymi narzędziami do tego samego celu.
Wygląda na to, że bower ma więcej dostępnych pakietów, przynajmniej dla tych bardziej popularnych. Ale wkrótce jQuery będzie również dostępne bezpośrednio w NPM i prawdopodobnie wszystkie inne biblioteki będą podążać za tym samym trendem.
Moim zdaniem, skoro istnieją narzędzia takie jak browserify i webmake , które pomagają korzystać z modułów węzłów w przeglądarce, nie ma już prawdziwej potrzeby bower lub volo , chyba że oferują coś innego dla ciebie (konkretny moduł istniejący tylko w ich rejestry).
Zarówno Volo, jak i Bower też są dobre, ale z mojego punktu widzenia, jeśli już używasz NPM, lepiej będzie się tego trzymać.
Pamiętaj, że możesz używać NPM do zarządzania zależnościami klientów nawet bez korzystania z browserify lub webmake . W większości projektów, nad którymi pracuję, po zainstalowaniu modułów npm uruchamiam skrypt, aby wdrożyć je w miejscu, w którym moja aplikacja kliencka ich używa. Czasami używam grunt, aby połączyć ten plik z innymi plikami js, a czasami odwołuję się do niego bezpośrednio z plików szablonów moich aplikacji internetowych. W każdym razie jest to osobiste preferencje. Inni mogą uznać, że Bower lub Volo są łatwiejsze w użyciu, ponieważ są bardziej naturalne w ich przepływie pracy.
źródło
yeoman
projekt zdecydował się wymyślić nowego menedżera pakietów, skoro już go mieliśmynpm
? (To było dojrzałe, sławne i bogate w funkcje) Ta myśl sprawia, że czuję, że wciąż nie rozumiem.npm
na rzecz prostoty frontendu. Stąd do rozwoju frontendu.Dużą zaletą Bowera nad NPM jest to, że jego zarządzanie zależnościami wymusza używanie pojedynczej wersji komponentu (podczas gdy NPM działa poprzez posiadanie różnych kopii / wersji jako zależności zależnych różnych modułów). Jest to BARDZO DOBRA RZECZ, ponieważ zapobiega to nadymaniu javascript po stronie klienta z powodu konieczności dołączania wielu kopii komponentu w różnych wersjach. Dołączenie wielu kopii modułu ma kluczowe znaczenie dla działania zarządzania zależnościami NPM, dlatego NPM jest całkowicie nieodpowiedni do zarządzania pakietami po stronie klienta.
Konsekwencją powyższego jest to, że opiekunowie pakietów i konsumenci bower muszą bardziej uważać na utrzymywanie numerów wersji zależności, aby uniknąć konfliktów, ale jest to cena, którą warto zapłacić. I uważam, że moduły NPM są często niechlujne w wydawaniu głównych, mniejszych i poprawek, więc zarządzanie zależnościami NPM również nie jest dokładnie usłane różami.
źródło
Wiem, że to nie jest objęte zakresem pytania, ale jest też inna alternatywa. Jam JS - http://jamjs.org/ Jedną z interesujących rzeczy jest to, że ma możliwości gruntowania w jamie:
Ktoś powinien stworzyć kolejnego menedżera pakietów i nazwać go: yapm :)
źródło