Jakie są różnice między Yarn i NPM? W chwili pisania tego pytanie mogę tylko znaleźć kilka artykułów w Internecie, pokazując to, co jest equvalent Przędza z polecenia NPM jak ten .
Czy mają te same funkcje (wiem, że Yarn obsługuje lokalne buforowanie i wygląda na to, że wystarczy pobrać pakiet tylko raz), ale poza tym są jakieś korzyści z przejścia z NPM do Yarn?
javascript
npm
yarnpkg
Asha
źródło
źródło
Odpowiedzi:
AKTUALIZACJA: marzec 2018 (trochę późno ...)
Od wersji 5
npm
package-lock.json
który naprawia całe drzewo zależności w taki sam sposób, jak robi to przędza (lub jakikolwiek inny) mechanizm blokujący,--save
jest teraz domniemane dlanpm i
npm 5.7.0 dodatkowo wprowadzone do
npm ci
polecenia szybciej zainstalować zależności w środowisku ciągłej integracji poprzez instalowanie pakietów tylko znaleźć wpackage-lock.json
(zgłoszenie błędu, jeślipackage-lock.json
ipackage.json
nie są zsynchronizowane).Osobiście nadal używam
npm
.Oryginał
Nie lubię cytować bezpośrednio od doktorów, ale wykonują świetną robotę wyjaśniając dlaczego, na tyle zwięźle, że nie widzę, jak dalej podsumować pomysły.
W dużej mierze:
Zawsze wiesz, że otrzymujesz to samo na każdym komputerze deweloperskim
Paralelizuje operacje, które
npm
nie, iZapewnia bardziej efektywne wykorzystanie sieci.
Może również efektywniej wykorzystywać inne zasoby systemowe (takie jak pamięć RAM) .
Jakie są doświadczenia ludzi z produkcją? Kto wie, dla ogółu społeczeństwa to niemowlę.
TL; DR firmy Yehuda Katz :
Niezły post na blogu
„ NPM vs Yarn Cheat Sheet ” autorstwa Ganta Laborde
Nieco dłuższa wersja z projektu :
I z README.md :
źródło
--flat
opcja, która wymusza prawdziwą płaską strukturę, w której można zainstalować tylko jedną wersję każdej zależności, ale jakie jest domyślne zachowanie w tym przypadku? Dzięki.install -g
.Co to jest PNPM?
pnpm
używa twardych linków i dowiązań symbolicznych do zapisania jednej wersji modułu tylko raz na dysku. Korzystając na przykład z npm lub Yarn, jeśli masz 100 projektów używających tej samej wersji lodash, będziesz mieć 100 kopii lodash na dysku. Dzięki pnpm lodash zostanie zapisany w jednym miejscu na dysku, a twardy link umieści go w node_modules, w którym powinien zostać zainstalowany.W rezultacie oszczędzasz gigabajty miejsca na dysku i masz dużo szybsze instalacje! Jeśli chcesz uzyskać więcej informacji na temat unikalnej struktury node_modules, którą tworzy pnpm i dlaczego działa dobrze z ekosystemem Node.js, przeczytaj ten mały artykuł: Dlaczego powinniśmy używać pnpm?
Jak zainstalować PNPM?
Jak zainstalować pakiet npm przy użyciu PNPM?
pnpm install -g typescript // or your desired package
Korzyści z
PNPM
ponadYarn
iNPM
Tutaj jest pasek postępu pokazujący czas instalacji
NPM
,YARN
iPNPM
(krótszy pasek jest lepszy)Kliknij, aby zakończyć test porównawczy
aby uzyskać więcej informacji, odwiedź https://www.npmjs.com/package/pnpm
źródło
npm :
Przędza :
źródło
Gdy instalujesz pakiet przy użyciu Yarn (używając nazwy pakietu dodawania przędzy), umieszcza on pakiet na dysku . Podczas następnej instalacji ten pakiet zostanie użyty zamiast wysyłania żądania HTTP w celu pobrania tarballa z rejestru.
Yarn jest dostarczany z poręcznym narzędziem do sprawdzania licencji , które może stać się naprawdę potężne, jeśli będziesz musiał sprawdzić licencje wszystkich modułów, na których polegasz.
Jeśli pracujesz na zastrzeżonym oprogramowaniu, nie ma znaczenia, którego używasz. Z npm możesz użyć npm-shrinkwrap.js, podczas gdy możesz użyć yarn.lock z Yarn.
Aby uzyskać więcej informacji, przeczytaj poniższy blog
https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/
źródło
Próbuję dać lepszy przegląd początkującym.
npm był historycznie (2010) najpopularniejszym menedżerem pakietów dla JavaScript. Jeśli chcesz go użyć do zarządzania zależnościami projektu, możesz wpisać następujące polecenie:
Spowoduje to wygenerowanie
package.json
pliku. Zawiera wszystkie zależności projektu.Następnie
utworzy katalog
node_modules
i pobierze zależności (które dodałeś dopackage.json
pliku) w nim.Utworzy również
package-lock.json
plik. Ten plik jest używany do opisania wygenerowanego drzewa zależności. Pozwala programistom zainstalować dokładnie te same zależności. Na przykład, możesz sobie wyobrazić programistę aktualizującego zależność do v2, a następnie v3, podczas gdy inny bezpośrednio aktualizuje do v3.npm instaluje zależności w sposób niedeterministyczny, co oznacza, że dwóch programistów może mieć inny
node_modules
katalog, co powoduje różne zachowania . ** npm ucierpiał z powodu złej reputacji, jak na przykład w lutym 2018 r .: wykryto problem w wersji 5.7.0, w którym uruchomienie sudo npm w systemach Linux zmienia właściciela plików systemowych, trwale uszkadzając system operacyjny.Aby rozwiązać te problemy i innych, Facebook wprowadził nową menedżera pakietów (2016): Nitki szybciej, bezpieczniej i bardziej niezawodnie Package Manager dla JavaScriptu.
Możesz dodać włóczkę do projektu wpisując:
yarn init
Spowoduje to utworzenie
package.json
pliku. Następnie zainstaluj zależności za pomocą:yarn install
Zostanie
node_modules
wygenerowany folder . Yarn wygeneruje również plik o nazwieyarn.lock
. Ten plik służy temu samemu celowi, co plik,package-lock.json
ale zamiast tego jest konstruowany przy użyciu deterministycznego i niezawodnego algorytmu, co prowadzi do spójnych kompilacji.Jeśli rozpocząłeś projekt z npm , możesz łatwo migrować do Yarn . przędza zużyje to samo
package.json
. Aby uzyskać więcej informacji, zobacz Migracja z npm .Jednak npm został poprawiony ze sobą nowości i niektóre projekty nadal używa KMP nad przędzy .
źródło
Odpowiedź @msanford obejmuje prawie wszystko, jednak brakuje mi części dotyczącej bezpieczeństwa (znanych luk OWASP).
Przędza
Możesz je sprawdzić za pomocą
yarn audit
, jednak nie możesz ich naprawić. Jest to nadal otwarty problem w GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ).npm
Możesz użyć
npm audit fix
, więc niektóre z nich możesz naprawić samodzielnie.Obaj, tj.
npm audit
Iyarn audit
mają własne narzędzia do ciągłej integracji. Są to odpowiednio https://github.com/IBM/audit-ci (używane, działa świetnie!) I https://yarnpkg.com/package/audit-ci (nie używane).źródło