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 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.
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.
# 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
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.
{
"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 | Účel | Příklad hodnoty |
|---|---|---|
| scripts | Spouštěcí příkazy pro npm run | "start": "node index.js" |
| dependencies | Produkční závislosti aplikace | "react": "^18.3.0" |
| devDependencies | Nástroje pro vývoj a testování | "jest": "^29.7.0" |
| peerDependencies | Hostitelské závislosti pro knihovny | "react": ">=17.0.0" |
| engines | Požadavky na verzi Node.js | {"node": ">=18.0.0"} |
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.
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.
| Vlastnost | npm | yarn | pnpm |
|---|---|---|---|
| Rok vzniku | 2010 | 2016 | 2017 |
| Lock soubor | package-lock.json | yarn.lock | pnpm-lock.yaml |
| Instalace | Sekvenční (npm 5+) | Paralelní | Paralelní |
| Místo na disku | Standardní | Standardní | Minimální (odkazy) |
| Workspaces | Ano (npm 7+) | Ano | Ano |
| Plug'n'Play | Ne | Ano | Ne |
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
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.
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.
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.
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í.
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í
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í.
Přečtěte si také