Úvod
Yarn a NPM jsou dva z nejpopulárnějších správců balíčků Node.js. Umožňují stahování, instalaci a správu balíčků při vývoji v JavaScriptu.
V tomto tutoriálu porovnáme Yarn a NPM, zvážíme jejich výkon, snadnost použití, zabezpečení a funkce, které poskytují.

Příze vs. NPM:definice
Příze (ještě další vyjednavač zdrojů) a NPM (Node Package Manager) jsou správci balíčků používané pro kódování JavaScriptu. Pracují s Node.js , který pomáhá uživatelům vyvíjet a spouštět kód JavaScript mimo webový prohlížeč.
Node.js používá velké množství balíčků a knihoven s otevřeným zdrojovým kódem, aby bylo kódování jednodušší a efektivnější. Správci balíčků jako Yarn a NPM umožňují uživatelům snadno instalovat, spravovat, aktualizovat a odstraňovat balíčky, knihovny a závislosti.
Co je příze?
Facebook vyvinul Yarn v roce 2016 jako náhradu za NPM. Byl navržen tak, aby nabízel pokročilejší funkce, které NPM v té době postrádal (jako je zamykání verzí) a vytvořil bezpečnější, stabilnější a efektivnější produkt.
Od vydání Yarnu však NPM přidal několik zásadních funkcí. Ve svém současném stavu je Yarn nyní spíše alternativou k NPM než náhradou.
Co je NPM?
NPM je výchozí správce balíčků pro Node.js s nástrojem CLI, který pomáhá instalovat, spravovat a odstraňovat balíčky Node.js. Umožňuje také uživatelům sdílet balíčky Node.js s otevřeným zdrojovým kódem.
Příze vs. NPM:Srovnání
Níže je uveden přehled některých podobností a rozdílů mezi přízí a NPM.
Instalace
Začneme porovnáním instalačního procesu pro Yarn a NPM:
Příze
Chcete-li začít používat Yarn, musíte jej nainstalovat pomocí instalačního programu MSI z oficiálního webu nebo správce balíčků, jako je Chocolatey, Scoop CLI nebo samotný NPM. Další informace naleznete v našem průvodci instalací Yarn na Windows a instalací Yarn na Ubuntu 18.04.
NPM
NPM je standardně součástí instalace Node.js a nevyžaduje žádné další kroky k instalaci. Chcete-li se dozvědět více o instalaci Node.js a NPM, podívejte se na jednoho z našich průvodců:
- Jak nainstalovat Node.js a NPM na Ubuntu 18.04 a 20.04
- Jak nainstalovat Node.js a NPM na CentOS 7
- Jak nainstalovat Node.js a NPM na Windows
- Jak nainstalovat Node.js a NPM na Mac
Závislosti
Příze
Příze verze 1 a NPM spravují závislosti velmi podobným způsobem. Oba ukládají metadata projektu do package.json soubor, který se nachází v node_modules složku v adresáři projektu.
Počínaje verzí 2 již Yarn nepoužívá node_modules složku pro sledování závislostí. Místo toho Yarn 2.0 používá Plug'n'Play funkce, která generuje jeden .pnp.cjs soubor. Tento soubor obsahuje mapu hierarchie závislostí pro projekt.
Příze používá yarn
příkaz k instalaci závislostí. Paralelně instaluje závislosti, což vám umožňuje přidávat více souborů současně.
Instalace závislostí automaticky vytvoří soubor zámku, který uloží přesný seznam závislostí použitých pro projekt. U Yarn se tento soubor nazývá yarn.lock .
NPM
NPM nainstaluje závislosti pomocí npm install
příkaz. Závislosti se instalují postupně, jedna po druhé.
NPM také vytvoří soubor zámku verze s názvem package-lock.json . Yarn také podporuje package-lock.json souborů, což uživatelům umožňuje migrovat data verze z NPM do Yarn.
Rychlost a výkon
Jak bylo uvedeno výše, zatímco NPM instaluje balíčky závislostí postupně, Yarn se instaluje paralelně. Z tohoto důvodu Yarn pracuje rychleji než NPM při instalaci větších souborů.
Oba nástroje také nabízejí možnost ukládání souborů závislostí do offline mezipaměti. To umožňuje uživatelům instalovat závislosti, i když jsou offline.
Kromě toho od verze 2 Yarn používá nulovou instalaci Vlastnosti. Tato funkce přebírá mapu závislostí z .pnp.cjs soubor a používá jej k provedení offline závislé instalace s prakticky nulovým zpožděním.

Zabezpečení
Příze
Yarn provádí kontrolu zabezpečení jako proces na pozadí při stahování balíčků. Používá licenční informace balíčku, aby zajistil, že nestáhne žádné škodlivé skripty nebo nezpůsobí žádné konflikty závislostí.
Oba nástroje využívají k zajištění bezpečného přenosu dat šifrovací protokoly. Yarn ověřuje balíčky pomocí kontrolního součtu, zatímco NPM používá SHA-512 (Secure Hash Algorithm) uložený v package-lock.json soubor.
NPM
Bezpečnostní hrozby byly významným problémem v raných verzích NPM. Od verze 6 provádí NPM bezpečnostní audit při každé instalaci balíčku. To pomáhá předcházet zranitelnostem a zajišťuje, že neexistují žádné konfliktní závislosti.
Můžete také spustit ruční audit pomocí npm audit
příkaz. Pokud NPM najde nějaké chyby zabezpečení, použijte npm audit fix
by měl problémy vyřešit.
Snadné použití
Jak Yarn, tak NPM jsou relativně snadno použitelné, zvláště když sdílejí několik příkazů. Výstup příkazu je obecně snadno čitelný a srozumitelný, i když při instalaci velkého počtu balíčků může být hůře vizuálně rozlišitelný.
Oba správci balíčků nabízejí interaktivní režim, který pomáhá uživatelům nastavovat nové projekty. V Yarn je tento režim ve výchozím nastavení povolen, zatímco NPM vyžaduje npm-upgrade balíček umožňující interaktivitu.

Funkce
Příze a NPM mají několik společných klíčových vlastností:
- Generování souborů zámku: Oba správci balíčků automaticky vytvoří soubor zámku verze. U Yarn se tento soubor nazývá yarn.lock , zatímco NPM pojmenuje soubor package-lock.json .
- Používání pracovních prostorů: Jak Yarn, tak NPM podporují pracovní prostory, což vám umožňuje používat jediné úložiště pro správu závislostí pro více projektů.
- Vzdálené skripty: NPM i Yarn umožňují spouštět skripty vzdáleně pomocí
npx
příkaz v NPM ayarn dlx
příkaz v přízi.
Funkce jsou exkluzivní pro Yarn:
- Plug'n'Play: Namísto použití node_modules Složka Yarn vygeneruje jeden .pnp.cjs soubor, který mapuje závislosti projektu. To umožňuje více optimalizované stromy závislostí a rychlejší spouštění projektu a instalaci balíčků.
- Nulový počet instalací: Tato funkce souvisí s Plug'n'Play , pomocí .pnp.cjs soubor k mapování balíčků uložených v offline mezipaměti. To vám umožňuje přistupovat a instalovat uložené balíčky téměř bez zpoždění.
- Kontrola licence: Yarn obsahuje vestavěnou kontrolu licencí při stahování a instalaci balíčků.

Příkazy
Níže uvedená tabulka poskytuje přehled některých nejčastěji používaných příkazů pro NPM a Yarn:
Příkaz | NPM | Příze |
---|---|---|
Inicializovat projekt | npm init | yarn init |
Spustit testy pro aktuální balíček | npm test | yarn test |
Kontrola neaktuálních balíčků | npm outdated | yarn outdated |
Publikovat balíček | npm publish | yarn publish |
Spusťte skript | npm run | yarn run |
Spravovat místní mezipaměť balíčků | npm cache clean | yarn cache clean |
Přihlášení nebo odhlášení | npm login/logout | yarn login/logout |
Instalovat závislosti | npm install | yarn |
Instalovat balíčky | npm install [package name] | yarn add [package name] |
Odinstalujte balíčky | npm uninstall [package name] | yarn remove [package name] |
Správce aktualizací | npm update | yarn upgrade |
Aktualizovat balíčky | npm update [package name] | yarn upgrade [package name] |
Instalujte balíčky globálně | npm install --global [package name] | yarn global add [package name] |
Globálně odinstalujte balíčky | npm uninstall --global [package name] | yarn global remove [package name] |
Interaktivní aktualizace závislosti | npm run upgrade-interactive | yarn upgrade-interactive |
Spustit balíček vzdáleně | yarn dlx | |
Zkontrolujte licence | yarn licenses ls |
Příze vs. NPM:Jak si vybrat
Při rozhodování, který z nich použít, je nezbytné zvážit výhody a nevýhody NPM i příze.
Příze
Výhody
- Podporuje paralelní instalaci a nulové instalace, které obě výrazně zvyšují výkon.
- Novější verze Yarn nabízejí bezpečnější formu zamykání verzí.
- Komunita aktivních uživatelů.
Nevýhody
- Yarn nefunguje s verzemi Node.js staršími než verze 5.
- Příze vykazuje problémy při pokusu o instalaci nativních modulů.
NPM
Výhody
- Snadné použití, zejména pro vývojáře zvyklé na pracovní postupy starších verzí.
- Instalace místních balíčků je optimalizována pro úsporu místa na pevném disku.
- Jednoduché uživatelské rozhraní pomáhá zkrátit dobu vývoje.
Nevýhody
- Online registr NPM se může stát nespolehlivým v případě problémů s výkonem. To také znamená, že NPM vyžaduje síťový přístup k instalaci balíčků z registru.
- Navzdory řadě vylepšení v různých verzích stále existují chyby zabezpečení při instalaci balíčků.
- Výstup příkazu může být obtížně čitelný.
Verdikt
Vzhledem ke všemu výše uvedenému je NPM lepší pro vývojáře, kteří jsou na něj zvyklí a jsou spokojeni s jeho současným pracovním postupem. Poskytuje přiměřeně efektivní uživatelskou zkušenost a zároveň šetří místo na pevném disku.
Na druhou stranu Yarn nabízí pokročilejší funkce, jako je Plug'n'Play a Zero installs. Poskytuje také o něco lepší výkon a zabezpečení, ale za cenu místa na pevném disku.