Balíčky, závislosti a package.json
Odkud se v projektu bere kód, který jsi nenapsal, a proč je node_modules tak obrovská.
11 minlekce 36/107
Po lekci umíš
- Rozumíš tomu, co je balíček a závislost
- Víš, k čemu je package.json a package-lock.json
- Znáš rizika spojená s přidáváním knihoven
Obsah lekce (6)
Když se podíváš do projektu, většina kódu tam není od tebe ani od Clauda. Je z balíčků.
Co je balíček
Balíček je hotový kus kódu od někoho jiného, který si projekt stáhne, aby nemusel řešit něco od nuly.
Závislost (dependency) znamená, že tvůj projekt na tom balíčku závisí – bez něj nefunguje.
package.json
Seznam toho, co projekt potřebuje, plus příkazy, které se dají spustit.
{
"name": "muj-web",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "16.3.2",
"react": "19.2.8"
},
"devDependencies": {
"typescript": "^5"
}
}Tři části, které tě zajímají:
scripts – příkazy, které můžeš spustit
Když je tady
"dev": "next dev", znamená to, ženpm run devspustínext dev. Když nevíš, jak se projekt spouští, podívej se sem.dependencies – potřebné pro běh
Balíčky, bez kterých aplikace nefunguje ani u uživatele.
devDependencies – potřebné jen při vývoji
Nástroje na kontrolu kódu, testování a podobně. K uživateli se nedostanou.
node_modules a package-lock.json
node_modules je složka se staženými balíčky. Bývá obrovská – klidně stovky megabajtů a desetitisíce souborů.
Nikdy do ní nesahej, nikdy ji neposílej na GitHub a nikdy ji nezálohuj. Dá se kdykoliv obnovit z package.json příkazem npm install.
package-lock.json je přesný zápis toho, které verze se skutečně nainstalovaly. Ten na GitHub patří.
Co znamenají ty symboly u verzí
Verze se zapisuje jako tři čísla: 16.3.2 – hlavní, vedlejší, oprava.
| Zápis | Co znamená |
|---|---|
16.3.2 | Přesně tahle verze |
^16.3.2 | Tahle nebo novější, ale ne verze 17 |
~16.3.2 | Tahle nebo novější oprava, ale ne 16.4 |
Změna prvního čísla znamená, že se něco zásadně změnilo a nemusí to fungovat jako dřív. Proto se ^ používá tak často – povoluje opravy, nepovolí zásadní změnu.
Rizika balíčků
Tady je část, kterou by ti měl někdo říct dřív, než přidáš dvacátý balíček.
Každý balíček je cizí kód, který ti běží v projektu
Nečteš ho a nikdo za něj neručí. U velkých a známých je riziko malé. U balíčku se sto staženími týdně to malé riziko není.
Balíčky mají vlastní závislosti
Přidáš jeden a stáhne se jich čtyřicet. To je normální, ale znamená to větší plochu, na které se něco může pokazit.
Neudržované balíčky
Když se balíček roky neaktualizuje, přestane fungovat s novějšími verzemi ostatních věcí. A když se v něm najde bezpečnostní díra, nikdo ji neopraví.
Zbytečné balíčky
Přidat celou knihovnu kvůli jedné funkci na formátování data je běžná chyba. Platí za to každý návštěvník tvého webu.
Zeptej se, než přidáš knihovnu
Použij, kdykoliv Claude navrhne nový balíček.
Než tuhle knihovnu přidáš, odpověz mi:
1. Co přesně z ní budeme používat?
2. Dá se to napsat vlastním kódem? Kolik řádků by to bylo?
3. Jak je populární a kdy naposledy vyšla nová verze?
4. Kolik dalších závislostí si s sebou přinese?
5. O kolik naroste výsledná velikost webu?
Pak mi doporuč, jestli ji přidat, nebo ne, a proč.Kdy o tom Claude bude mluvit
- „Přidám balíček na práci s daty.“ → Chystá se něco stáhnout. Zeptej se proč.
- „Spusť npm install.“ → Stahují se balíčky podle package.json.
- „Konflikt verzí.“ → Dva balíčky chtějí nesouhlasné verze třetího. Nech to vyřešit Clauda.
Co si odnést
- Balíček je hotový cizí kód, závislost je balíček, bez kterého projekt neběží.
package.jsonje seznam,package-lock.jsonpřesné verze,node_modulesstažené soubory.node_modulesnepatří na GitHub,package-lock.jsonano.- Každý nový balíček je rozhodnutí. Ptej se, než ho přidáš.
Máš to za sebou?
Označ lekci jako hotovou, ať víš, kde jsi skončil. Nic se tím neuzamkne.
Další lekceProměnné prostředí a tajemstvíObsah aktualizován: 21. srpna 2026