W tym wpisie przedstawię Ci najpopularniejsze menadżery pakietów w JavaScript. Npm–owi, czyli jednemu z najpopularniejszych poświęciłem już dedykowany artykuł. Dowiesz się tam, czym on jest, do czego służy, proces jego instalacji i podstawowe polecenia. Jeśli nie wiesz, czym jest npm, to zapoznaj się z podlinkowanym artykułem, ponieważ wiedza tam zawarta przyda Ci się w tym artykule. Nawet jeśli już go kiedyś przeczytałeś, to może warto sobie odświeżyć wiedzę 😉
Na samym początku myślę, że warto powiedzieć czy są menadżery pakietów. Jak sama nazwa wskazuje, menadżery pakietów pozwalają na zarządzanie zależnościami dodawanymi do projektu. Dzięki menadżerom możemy bezproblemowo dodawać, usuwać czy aktualizować wykorzystywane pakiety. Oprócz tego pozwalają nam na definiowanie skryptów. Do najpopularniejszych menadżerów należą:
- npm — opisany przeze mnie we wpisie Podstawy pracy z npm,
- Bower — raczej należy już do reliktów przeszłości i nie warto zawracać nim sobie głowy. Wymieniam go tu raczej w formie ciekawostki,
- Yarn,
- pnpm
Tym razem skupimy się głównie na dwóch ostatnich pozycjach z tej listy.
Yarn
Yarn jest menadżerem pakietów stworzonym przez zespół Facebooka. Twórcy przedstawiają go jako niezwykle szybki, co w zasadzie jest prawdą. Jak pokazują badania przeprowadzone przez jednego z twórców w serwisie Medium, średni czas instalacji projektu, na którym przeprowadzono benchmark, wynosił dla npm 188 sekund, gdzie Yarnowi zajęło to zaledwie 39 sekund! Odpowiedź na to pytanie jest niezwykle prosta — Yarn przede wszystkim jest w stanie pobierać wiele paczek jednocześnie, gdzie npm instaluje paczki sekwencyjnie jedna po drugiej. Kolejnym argumentem przemawiającym na korzyść Yarna jest możliwość ponownego używania paczek. Jeżeli mamy na naszym komputerze daną paczkę to zostanie ona użyta zamiast ponownie pobrana. Link do wspomnianego benchmarka znajdziesz w źródłach na końcu wpisu.
Oprócz tego twórcy gwarantują nam zachowanie względów bezpieczeństwa oraz niezawodność. Do tego otrzymujemy przejrzysty plik .lock
i otrzymujemy przepis na świetny menadżer pakietów! Będąc już przy temacie, to zachęcam do przeczytania artykułu na snyk.io, gdzie opisane zostało, jak potencjalnie można przeprowadzić atak na aplikację z wykorzystaniem plików .lock
.
pnpm
Kolejny menadżer pakietów, jaki warto poznać to pnpm. Tu również mamy zapewnienia o szybkości i wydajności. Czymś, co wyróżnia pnpm-a, jest to, że dzięki niemu mamy pewność, że dana wersja paczki została zainstalowana na naszym komputerze wyłącznie raz. Wyobraź sobie, jakie to jest zbawienie dla ludzi, którzy pracują na komputerach z dyskami 128GB/256GB, które wciąż trafiają się w budżetowych lub poleasingowych laptopach i niektórych wariantach MacBook-ów.
Szczególnie przydatny pnpm okaże się przy pracy z wieloma paczkami trzymanymi w jednym repozytorium. Dzięki workspace’om możemy pracować na kilku paczkach jednocześnie i bezpośrednio używać ich w innych paczkach w tym samym repozytorium. Opcja link-workspace-packages
pozwoli nam podlinkować paczki, w których coś już zmieniliśmy, a które zmiany są nam potrzebne w innej paczce. Bazując na własnym doświadczeniu, mogę powiedzieć, że mechanizm linkowania w pnpm działa wyśmienicie!
Podsumowanie
W podsumowaniu przede wszystkim nasuwa mi się pytanie, jakiego menadżera pakietów ty używasz? Jeśli zostawisz mi odpowiedź na to pytanie w komentarzu, to koniecznie również napisz, dlaczego ten, a nie inny menadżer.
Osobiście do małych i prostych projektów używam Yarna — jest dla mnie w zupełności wystarczający. Do bardziej skomplikowanych projektów, a już szczególnie gdy rozwijasz wiele paczek w obrębie jednego repozytorium, to bez zastanawiania się wybierz pnpm-a!
Jak zwykle też zachęcam do sprawdzenia źródeł, gdzie znajdziesz dodatkową porcję wiedzy.
Źródła i materiały dodatkowe
- Bower – A package manager for the web
- Yarn docs
- Yarn: A new package manager for JavaScript
- YARN vs. NPM
- Yarn vs NPM: Why and How to Migrate from NPM to Yarn
- Why npm lockfiles can be a security blindspot for injecting malicious modules
- Yarn vs npm – which Node package manager to use in 2018?
- pnpm docs
- NPM vs PNPM vs Yarn
- Why should we use pnpm?
- What is pnpm?
Zapisz się na mailing i odbierz e-booka
Odbierz darmowy egzemplarz e-booka 106 Pytań Rekrutacyjnych Junior JavaScript Developer i realnie zwiększ swoje szanse na rozmowie rekrutacyjnej! Będziesz też otrzymywać wartościowe treści i powiadomienia o nowych wpisach na skrzynkę e-mail.