yarn: podstata, alternativní správce balíčků pro React Native

Autor: IT Sectr Publikováno: 2026-02-13 Doba čtení: 10 min

yarn — alternativní správce balíčků pro Node.js, vytvořený Facebookem ve spolupráci s Exponent, Google a Tilde v roce 2016. yarn řešil problémy rychlosti a bezpečnosti npm 2-4: paralelní instalace, přísný lock soubor a offline cache. Dnes si yarn udržuje popularitu v React Native, Expo a monorepozitářích. Více na yarn Documentation.

Hlavní body

  • yarn — správce balíčků pro Node.js, vytvořený Facebookem v roce 2016 k řešení problémů npm
  • yarn.lock — soubor pro fixaci přesných verzí všech závislostí, vytvářený automaticky
  • yarn install — paralelní instalace balíčků s využitím globální cache bez duplikování
  • yarn workspaces — mechanismus správy monorepozitářů se sdílenou složkou node_modules
  • Plug'n'Play — alternativa k node_modules s ukládáním balíčků v ZIP archivech v globální cache

Co je yarn — správce balíčků?

yarn (Yet Another Resource Negotiator) byl vydán v říjnu 2016 jako odpověď Facebooku na problémy npm 2-4: pomalá instalace, chybějící lock soubor a nebezpečné balíčky. yarn nabídl paralelní stahování balíčků, deterministický yarn.lock a ověření integrity pomocí kontrolních součtů. V roce 2020 yarn přešel na verzi 2 (Berry) s Plug'n'Play a přístupem TypeScript-first.

Architektura yarn se liší od npm: yarn stahuje balíčky paralelně (npm do verze 5 — sekvenčně), ukládá každý balíček do ~/.cache/yarn bez duplikování mezi projekty a ověřuje integritu pomocí checksum. yarn vždy generuje yarn.lock při každé instalaci, zatímco package-lock.json v npm se objevil až ve verzi 5.

Od yarn 2 (Berry, 2020) byl yarn kompletně přepsán v TypeScriptu a podporuje Plug'n'Play, workspaces, constraints pro monorepozitáře a protokoly instalace z různých zdrojů (npm, git, tarball). yarn 3+ (2022) přidal Zero-Installs — ukládání cache v repozitáři pro okamžitou instalaci bez sítě.

Jak yarn spravuje instalaci závislostí

yarn install — hlavní příkaz, který čte package.json a yarn.lock a instaluje závislosti. yarn stahuje balíčky paralelně, což zrychluje instalaci 2-3krát oproti npm 4 a starším verzím. yarn používá offline cache: pokud byl balíček již stažen v jiném projektu, je zkopírován z cache, nikoli stažen znovu.

bash
# Hlavní příkazy yarn
$ yarn install
$ yarn add react-native-webview
$ yarn add --dev typescript
$ yarn global add expo-cli
# Interaktivní aktualizace
$ yarn upgrade-interactive
# Odstranění duplicitních balíčků
$ yarn dedupe

yarn add — příkaz pro instalaci nového balíčku. yarn add <package> přidává do dependencies, yarn add --dev — do devDependencies. yarn automaticky aktualizuje yarn.lock. yarn upgrade aktualizuje balíčky na nejnovější verze v rámci sémantického rozsahu. yarn upgrade-interactive — interaktivní režim výběru konkrétních balíčků k aktualizaci.

yarn cache — globální cache v ~/.cache/yarn/v6. Každý balíček je uložen jednou v ZIP archivu s kontrolním součtem. yarn cache se čistí automaticky, ale lze ručně spustit yarn cache clean. yarn cache dir ukazuje cestu k cache. yarn cache list — seznam balíčků v cache.

yarn.lock: účel a struktura souboru

yarn.lock — soubor pro fixaci přesných verzí všech závislostí a jejich tranzitivních balíčků. Na rozdíl od package-lock.json (JSON) používá yarn.lock formát YAML s plochou strukturou. yarn.lock je vždy automaticky generován při yarn install nebo yarn add — to zaručuje, že všichni vývojáři a CI servery obdrží identickou sadu balíčků.

yaml
# Příklad struktury yarn.lock
react@^18.3.0:
  version: "18.3.1"
  resolution: "react@npm:18.3.1"
  dependencies:
    loose-envify: "^1.1.0"
  checksum: "abc123def456..."

react-native@^0.76.0:
  version: "0.76.3"
  resolution: "react-native@npm:0.76.3"
  dependencies:
    react: "18.3.1"
  checksum: "def789ghi012..."

Pole yarn.lock: version — přesná verze balíčku, resolution — zdroj a verze, dependencies — jeho závislosti, checksum — kontrolní součet pro ověření. yarn.lock se commitue do repozitáře a je jediným zdrojem pravdy pro závislosti. Pokud yarn.lock a package.json nesouhlasí, yarn vydá varování.

Yarn constraints — systém pravidel pro monorepozitáře, který kontroluje a vynucuje verze závislostí v yarn.lock. Omezení jsou popsána v souboru yarn.constraints.js v jazyce Yarn Constraint Language. Constraints umožňují zaručit, že všechny balíčky v monorepozitáři používají stejnou verzi Reactu nebo TypeScriptu.

yarn v ekosystému React Native

React Native je tradičně úzce spjat s yarn. Expo CLI, React Native CLI a Create React Native App původně používaly yarn. V React Native projektech yarn.lock fixuje verze nativních modulů, což je kritické pro stabilní kompilaci přes CocoaPods (iOS) a Gradle (Android). yarn workspaces jsou populární v React Native monorepozitářích se sdíleným kódem.

yarn workspaces v React Native monorepozitářích: kořenový package.json obsahuje "workspaces": ["packages/*", "mobile"]. yarn install vytvoří jedinou složku node_modules na kořenové úrovni. Balíčky na sebe odkazují přes symlinky. npx pod-install se spouští po změně nativních závislostí pro aktualizaci CocoaPods.

json
{
  "private": true,
  "workspaces": [
    "packages/*",
    "apps/mobile",
    "apps/web"
  ],
  "scripts": {
    "mobile:start": "yarn workspace mobile start",
    "mobile:ios": "yarn workspace mobile ios",
    "lint": "yarn workspaces run lint"
  }
}

Expo SDK 50+ oficiálně doporučuje yarn pro nové projekty vytvořené přes npx create-expo-app. yarn zajišťuje kompatibilitu s Expo moduly a automaticky generuje správný yarn.lock. Zero-Installs v yarn 3+ umožňuje committovat cache do repozitáře — vývojáři obdrží hotové prostředí bez instalace závislostí po git clone.

yarn a npm: srovnávací analýza

npm a yarn řeší stejný úkol — správu balíčků Node.js. S vydáním npm 5-7 funkční propast prakticky zmizela. npm 7+ zahrnuje workspaces, npm ci (ekvivalent yarn install --frozen-lockfile) a paralelní instalaci. yarn si však udržuje výhody ve specifických scénářích: Plug'n'Play, Zero-Installs a vyspělý systém constraints.

Vlastnostnpmyarn
Rok vytvoření20102016
Lock souborpackage-lock.json (JSON)yarn.lock (YAML)
InstalaceSekvenční (npm 5+)Paralelní
Plug'n'PlayNeAno (yarn 2+)
WorkspacesAno (npm 7+)Ano
Zero-InstallsNeAno (yarn 3+)
Cachenode_modules s flatteningemGlobální ~/.cache/yarn
Jazyk implementaceJavaScriptTypeScript (yarn 2+)

Kdy zvolit yarn: projekty na Expo SDK 50+, velké monorepozitáře (100+ balíčků), týmy oceňující Zero-Installs pro rychlé nastavení prostředí a legacy projekty již používající yarn. Kdy zvolit npm: standardní projekty create-react-app, Next.js, Vite, týmy bez specifických požadavků na správce balíčků.

yarn 4 (2024) představil vylepšený výkon, nativní podporu ESM a optimalizaci pro velké monorepozitáře. npm 10+ se nadále vyvíjí s důrazem na bezpečnost a kompatibilitu. Volba mezi npm a yarn je dnes otázkou týmových preferencí a konkrétních požadavků projektu, nikoli technické převahy jednoho nástroje.

Často kladené otázky

Jaký je hlavní rozdíl mezi yarn a npm?

yarn původně předčil npm v rychlosti díky paralelní instalaci balíčků a agresivnímu cacheování. yarn.lock je automaticky generován při každé instalaci, zatímco package-lock.json se objevil v npm 5. yarn nabízí Plug'n'Play — alternativu k node_modules s nulovým časem instalace. Od npm 7+ je rozdíl v rychlosti a funkcionalitě pro základní scénáře minimální.

Jak fungují yarn workspaces v monorepozitářích?

yarn workspaces — mechanismus správy více balíčků v jednom repozitáři. Kořenový package.json obsahuje pole "workspaces": ["packages/*"]. yarn install instaluje společné závislosti na horní úrovni do jediného node_modules, vytváří symlinky mezi lokálními balíčky a zabraňuje duplikování. Příkazy se spouštějí pro všechny workspace přes yarn workspaces run <script>.

Co je yarn Plug'n'Play a k čemu slouží?

Plug'n'Play (PnP) — alternativa k tradiční složce node_modules, představená v yarn 2. Místo kopírování souborů yarn vytvoří mapu závislostí v .pnp.cjs a ukládá balíčky v ZIP archivech v globální cache. Výhody PnP: instalace během sekund, doba spouštění Node.js se snižuje o 30-50%, absence node_modules a souvisejících problémů s cestami.

Jak migrovat projekt z npm na yarn?

Nainstalujte yarn globálně: npm install -g yarn. V kořenu projektu spusťte yarn import — yarn přečte package-lock.json a vytvoří ekvivalentní yarn.lock. Smažte node_modules a package-lock.json, spusťte yarn install pro ověření. Aktualizujte konfiguraci CI/CD, nahraďte npm za yarn. yarn je plně kompatibilní s package.json.

Jak opravit chyby blokování verzí v yarn?

Chyba "Integrity check failed" nastává při nesouladu mezi yarn.lock a node_modules. Řešení: smažte node_modules, yarn.lock a vyčistěte cache (yarn cache clean), poté znovu spusťte yarn install. Pro konflikty verzí použijte yarn upgrade-interactive k výběru konkrétních aktualizací. yarn dedupe odstraní duplicitní balíčky.

Shrnutí

  • yarn — alternativní správce balíčků Node.js, vytvořený Facebookem v roce 2016
  • yarn.lock — soubor pro fixaci přesných verzí všech závislostí ve formátu YAML
  • yarn install — paralelní instalace balíčků s využitím globální offline cache
  • Plug'n'Play — inovativní mechanismus yarn 2+ bez složky node_modules
  • yarn workspaces — správa monorepozitářů s jediným node_modules
  • yarn v React Native — standardní správce balíčků pro projekty Expo a React Native
  • Zero-Installs — committování cache do repozitáře pro okamžitou instalaci bez stahování balíčků

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také