npm: základy, správce balíčků pro React Native a Node.js

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

npm (Node Package Manager) — standardní správce balíčků pro platformu Node.js, součást instalace Node.js. npm spravuje závislosti JavaScript a TypeScript projektů: instaluje knihovny do node_modules, aktualizuje verze balíčků, řeší konflikty verzí. package.json — centrální konfigurační soubor s metadaty a seznamem závislostí. npm Registry — největší registr balíčků. Více na npm Registry.

Hlavní body

  • npm — standardní správce balíčků Node.js, součást Node.js od verze 0.6.3
  • package.json — konfigurační soubor projektu se závislostmi, skripty a metadaty
  • npm install — základní příkaz pro instalaci závislostí z package.json do složky node_modules
  • package-lock.json — soubor pro fixaci přesných verzí pro reprodukovatelné instalace ve všech prostředích
  • npm ci — příkaz pro CI/CD instalující balíčky striktně podle lock souboru bez jeho aktualizace

Co je npm — správce balíčků Node.js?

npm byl vytvořen v roce 2010 Isaacem Schlueterem jako řešení pro správu závislostí Node.js. Od roku 2014 je npm spravován společností npm, Inc., kterou v roce 2020 koupil Microsoft/GitHub. Nástroj se skládá ze dvou částí: CLI (příkazový řádek) pro instalaci a správu balíčků a Registry — centrálního repozitáře všech publikovaných modulů na adrese registry.npmjs.org.

npm Registry — největší registr balíčků: více než 2 miliony balíčků a přes 10 miliard stažení měsíčně. Každý balíček má verzi SemVer, popis, závislosti, licenci a autorství. Publikace vlastního balíčku se provádí pomocí npm publish. npm podporuje scoped balíčky pro organizace (@scope/package), soukromé registry a vestavěný bezpečnostní audit.

Node.js verze 18+ obsahuje npm 9+ s vylepšeným výkonem, workspaces pro monorepozitáře a přepracovaným mechanismem peer dependencies. Ekosystém npm zahrnuje serverový JavaScript, frontend (React, Vue, Angular), mobilní vývoj (React Native), nástroje pro sestavení (Webpack, Vite) a CLI nástroje. npm je hlavní distribuční kanál pro JavaScript knihovny.

Hlavní možnosti npm

npm install — hlavní příkaz, který čte package.json a package-lock.json pro instalaci všech závislostí do node_modules. Při prvním spuštění npm vypočítá graf závislostí, vyřeší konflikty verzí a vygeneruje package-lock.json. Příkaz npm install <package> instaluje konkrétní balíček; přepínač --save-dev přidává do devDependencies, --global — globálně.

npx — spouštěč balíčků, součást npm od verze 5.2. npx umožňuje spouštět CLI nástroje bez globální instalace: npx react-native init nebo npx create-react-app my-app. npx stáhne balíček do dočasné mezipaměti, spustí jej a po dokončení vyčistí. npx je také užitečný pro spouštění konkrétních verzí nástrojů.

npm audit prohledává strom závislostí na známé zranitelnosti z databáze npm. Příkaz zobrazí zprávu s úrovněmi kritičnosti (critical, high, moderate) a doporučuje npm audit fix pro automatickou aktualizaci zranitelných balíčků. npm cache ukládá stažené balíčky lokálně. npm cache clean --force čistí mezipaměť při problémech s instalací. npm outdated zobrazuje zastaralé balíčky.

bash
# Hlavní příkazy npm
$ npm install
$ npm install react-native-webview --save
$ npm install typescript --save-dev
# Spuštění bez globální instalace
$ npx react-native init MyApp
# Bezpečnostní audit
$ npm audit --fix

Struktura package.json a správa závislostí

package.json — je JSON soubor v kořenu projektu, který popisuje jeho metadata, závislosti a konfiguraci. Povinná pole: name (jedinečný název balíčku) a version (verze SemVer, např. 1.0.0). Soubor se vytváří příkazem npm init -y pro rychlou inicializaci nebo ručně.

Semantic Versioning (SemVer) — standard verzování MAJOR.MINOR.PATCH. Hlavní verze se mění při nekompatibilních změnách API, vedlejší — při přidání funkcionality (zpětně kompatibilní), oprava — při opravě chyb. Symbol ^ před verzí povoluje aktualizace vedlejší verze a opravy, ~ pouze opravy.

json
{
  "name": "my-app",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios"
  },
  "dependencies": {
    "react": "^18.3.0",
    "react-native": "^0.76.0"
  },
  "devDependencies": {
    "typescript": "^5.5.0",
    "@types/react": "^18.3.0"
  }
}
PoleÚčelPříklad hodnoty
scriptsSpouštěcí příkazy pro npm run"start": "node index.js"
dependenciesProdukční závislosti aplikace"react": "^18.3.0"
devDependenciesNástroje pro vývoj a testování"jest": "^29.7.0"
peerDependenciesHostitelské závislosti pro knihovny"react": ">=17.0.0"
enginesPožadavky na verzi Node.js{"node": ">=18.0.0"}

npm ve vývoji React Native

React Native projekty aktivně používají npm pro správu závislostí. Standardní sada zahrnuje react, react-native, knihovny navigace (React Navigation), HTTP požadavky (axios), správu stavu (Redux, Zustand) a UI komponenty. npm umožňuje instalaci tisíců kompatibilních balíčků z registru.

npx pod-install — povinný příkaz po instalaci nativních modulů v React Native pro iOS. npm automaticky generuje Podfile.lock na základě package-lock.json. V Expo projektech se používá expo install místo npm install, protože vybírá verze kompatibilní s aktuální verzí Expo SDK.

Konflikty verzí — častý problém v React Native: react-native-reanimated, react-native-gesture-handler a react-native-safe-area-context vyžadují sladěné verze. Řešení — aktualizovat všechny balíčky na nejnovější kompatibilní verze nebo použít --legacy-peer-deps. package-lock.json je klíčový pro nativní moduly kompilované přes CocoaPods a Gradle.

Srovnání npm s alternativními správci

npm — standardní správce balíčků, součást Node.js. Hlavní alternativy: yarn (vytvořen Facebookem v 2016) a pnpm (rychlý, s pevnými odkazy). Od npm 5 je rozdíl v rychlosti a funkcionalitě mezi npm a yarn minimální. npm 7+ přidal workspaces, což jej činí konkurenceschopným pro monorepozitáře.

Vlastnostnpmyarnpnpm
Rok vzniku201020162017
Lock souborpackage-lock.jsonyarn.lockpnpm-lock.yaml
InstalaceSekvenční (npm 5+)ParalelníParalelní
Místo na diskuStandardníStandardníMinimální (odkazy)
WorkspacesAno (npm 7+)AnoAno
Plug'n'PlayNeAnoNe

Podle State of JS 2025: npm používá 62% vývojářů, yarn — 35% (převážně staré projekty a příznivci PnP), pnpm — 3%. Pro React Native projekty jsou oba nástroje rovnocenné, ale npm se častěji vyskytuje v projektech na Expo SDK 50+ a nových inicializacích React Native.

yarn si zachovává výhodu v extrémně velkých monorepozitářích (100+ balíčků) díky vyspělejší implementaci workspaces a Plug'n'Play. pnpm vítězí v úspoře místa na disku díky pevným odkazům na globální úložiště. Výběr správce závisí na preferencích týmu a infrastruktuře.

Často kladené otázky

Jaký je rozdíl mezi npm install a npm ci?

npm install aktualizuje package-lock.json a může instalovat nové vedlejší verze v rámci sémantického rozsahu. npm ci (Clean Install) odstraní node_modules a instaluje balíčky striktně podle package-lock.json bez jeho aktualizace. npm ci je rychlejší, používá se v CI/CD a zaručuje identické prostředí na všech strojích. Pokud package-lock.json chybí, npm ci vrátí chybu.

Jak opravit konflikty peer dependencies v npm?

Od npm 7 způsobují konflikty peer dependencies chybu sestavení. Řešení: aktualizovat všechny balíčky na kompatibilní verze pomocí npm update, použít přepínač --legacy-peer-deps pro režim npm 6, nebo přidat sekci overrides do package.json pro vynucenou fixaci verze konkrétního balíčku. Nejlepší možnost — aktualizovat závislosti na kompatibilní verze.

Co je npm audit a k čemu slouží?

npm audit prohledává strom závislostí na známé zranitelnosti z databáze npm Security Advisory. Příkaz zobrazí zprávu s úrovní kritičnosti (critical, high, moderate, low) a doporučuje npm audit fix pro automatickou aktualizaci zranitelných balíčků na bezpečné verze. Pravidelné spouštění npm audit — základní bezpečnostní praxe v JavaScript projektech.

Jak npm workspaces zjednodušují monorepozitáře?

npm workspaces umožňují správu více balíčků v jednom repozitáři. Přidejte pole "workspaces": ["packages/*"] do kořenového package.json. Výhody: jednotná instalace všech závislostí do sdíleného node_modules, automatické symbolické odkazy mezi lokálními balíčky, spouštění skriptů pro všechny balíčky z kořene, eliminace duplikace verzí.

Proč commitovat package-lock.json do repozitáře?

package-lock.json fixuje přesné verze všech závislostí a jejich tranzitivních balíčků. Bez něj mohou různí vývojáři a CI servery získat různé verze knihoven v rámci sémantického rozsahu, což vede k chybám „na mém stroji to funguje“. Commit lock souboru zaručuje reprodukovatelná sestavení a identické chování ve všech prostředích.

Shrnutí

  • npm — standardní správce balíčků Node.js, součást Node.js od verze 0.6.3
  • package.json — konfigurační soubor projektu se závislostmi, skripty a metadaty
  • npm install — instalace závislostí, npm ci — fixace podle package-lock.json pro CI/CD
  • package-lock.json — fixace přesných verzí, povinné pro reprodukovatelná sestavení
  • npm Registry — největší registr balíčků s více než 2 miliony modulů
  • npm audit — bezpečnostní kontrola závislostí s automatickou opravou zranitelností
  • npm workspaces — mechanismus pro správu monorepozitářů se sdíleným node_modules

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é