Dependency files - jak je porovnávat a nepřijít o rozum
Dependency management je věc, která mě dostává. Změny v requirements.txt nebo package.json můžou způsobit breaking changes, security díry nebo konflikty verzí. A ty to zjistíš až na produkci.
Proč to porovnávám
- Version upgrades - co se vlastně aktualizovalo?
- Security - jsou tam vulnerable packages?
- Bloat - nepřibyly zbytečné závislosti?
- Konflikty - nekompatibilní verze?
- Audit trail - proč byla závislost přidána/odebrána?
requirements.txt (Python)
- Plain text s package names a verzemi
pip freezevygeneruje aktuální stav- Virtual environments izolují projekty
- Pinned verze (
==) vs ranges (>=) - Tranzitivní závislosti často nejsou listed
package.json (JavaScript)
- JSON formát
- dependencies vs devDependencies vs peerDependencies
npm installpodle lock file- Semantic versioning s caret (
^) a tilde (~) - node_modules = nested dependencies
Version changes - na co si dát pozor
- Major (X.0.0) - může obsahovat breaking changes
- Minor (0.X.0) - nové features, zpětně kompatibilní
- Patch (0.0.X) - bug fixy
Lock files jsou kritické:
- package-lock.json
- poetry.lock
- yarn.lock
Diffuj je taky!
Security scanning
- npm audit / pip-audit - scanning vulnerabilities
- Dependabot / Renovate - automatické updates
- GitHub Security Alerts - notifikace
- CVE databáze - known vulnerabilities
Pravidelně updateovat. Staré závislosti = security riziko.
Dependency konflikty
Typický problém: dva packages vyžadují různé verze téhož dependency.
Co s tím:
- Najít kompatibilní version range
- Vyřešit peer dependency warningy
- Lock file merge konflikty
- Testovat po každé změně
Best practices
- Pinuj kritické závislosti - stabilita
- Používej lock files - reproducible builds
- Pravidelně updateuj - security patches
- Audituj nové závislosti - co přidáváš?
- Dokumentuj proč - u každé závislosti
- Odstraňuj nepoužívané - cleanup
Co používám
- pip-compile - Python dependency resolution
- npm list / yarn why - dependency tree
- JSON Diff - pro package.json
- Libraries.io - tracking updates
- CI/CD checky v pipeline
Dependency management není sexy, ale ušetří ti hodně problémů. Lepší 5 minut diffu než 5 hodin debugování.
Potřebuješ porovnat package.json mezi větvemi? Hoď to do JSON Diff.
Vyzkoušejte PorovnejText.cz zdarma
Nejrychlejší český nástroj pro porovnání textů. Vše probíhá ve vašem prohlížeči, žádná registrace není potřeba.
Porovnat texty nyní →Související články
Git diff mi nestačí - kdy a proč používám online diff
Jako programátor pracuju s git diff denně. Ale někdy potřebuju rychle porovnat dva kousky kódu a nechce se mi kvůli tomu otvírat IDE. Kdy použít co.
Markdown a README - jak kontroluju změny
Píšete dokumentaci v Markdownu? Tady je jak porovnávám změny v README a dalších md souborech.
Jak automatizuju changelog z Git commitů
Ruční psaní release notes mě nebavilo. Tady je jak jsem to automatizoval pomocí Conventional Commits.