npm to standardowy menedżer pakietów dla Node.js. Jednak Facebook od jakiegoś czasu rozwija alternatywne rozwiązanie do zarządzania pakietami o nazwie Yarn . Wygląda na to, że Yarn powoli znika z pliku README GitHuba jako domyślne rozwiązanie, a statystyki na oficjalnej stronie pokazują, że tylko ułamek instalacji pakietów jest przeprowadzany za pomocą Yarna. Niemniej jednak warto spojrzeć dalej, niż tylko na oczywistości.
Yarn jest w pełni kompatybilny z istniejącymi plikami package.json, dzięki czemu można łatwo korzystać z obu rozwiązań w istniejących projektach. Polecenia dla obu rozwiązań różnią się tylko nieznacznie. Poniżej znajduje się porównanie najważniejszych poleceń.:
| Opis | npm | Przędza |
| Zainicjuj | npm init | init przędzy |
| Aktualizacja | npm install -g npm | samodzielna aktualizacja przędzy |
| Zainstaluj pakiet | npm install --save [nazwa] | dodanie przędzy [nazwa] |
| Zainstaluj pakiet | npm install --save-dev [nazwa] | dodać przędzę --dev [nazwa] |
| Zainstaluj pakiet na całym świecie | npm install -g [nazwa] | globalne dodanie przędzy [nazwa] |
| Zainstaluj wszystkie pakiety | npm install | instalacja przędzy |
| Zaktualizuj wszystkie pakiety | aktualizacja npm | aktualizacja przędzy |
| Odinstaluj pakiet | npm remove [nazwa] | przędza usuń [nazwa] |
Yarn został zaprojektowany z myślą o wyeliminowaniu niektórych słabości npm. Najbardziej oczywistą różnicą jest poprawiona wydajność: instalacje przyrostowe, wielowątkowość i najnowsza , przełomowa funkcja Plug'n'Play (PNP) znacząco zwiększają wydajność. Plug'n'Play eliminuje potrzebę tworzenia folderu `node_modules` w projekcie, którego liczba plików często osiąga astronomiczne rozmiary . Więcej informacji można znaleźć w oficjalnym dokumencie technicznym Plug'n'Play . Zainstalujemy eslint raz z npm, a następnie z Yarn, za każdym razem z rozgrzaną pamięcią podręczną, aby wyraźnie pokazać różnicę w szybkości (6x!).:

