---
title: "II. Závislosti"
source: Twelve-Factor App
source_url: https://github.com/heroku/12factor
licence: MIT
domain: engineering
subdomain: 12factor
date_added: 2026-04-25
---

## II. Závislosti
### Explicitně deklarujte a izololujte závislosti.

Většina programovacých jazyků poskytuje balíčkovací systém pro distribuci podpůrných knihoven, například [CPAN](http://www.cpan.org/) pro Perl nebo [Rubygems](http://rubygems.org/) pro Ruby. Knihovny instalované skrze balíčkovací systém mohou být instalovány globálně pro celý systém (nazýváme "site packages") nebo pouze lokálně v rámci adresáře dané aplikace (nazýváme "vendoring" nebo "bundling").

**Twelve-factor aplikace se nikdy nespoléhá na implicitní existenci globálních systémových balíčků.** Svoje závislosti deklaruje úplně a přesně pomocí manifestu *deklarovaných závislostí*. Dále používá nástroje pro *izolaci závislostí*, aby bylo zajištěno, že při běhu aplikace žádné implicitní zavislosti neprosakují z okolního systému. Úplná explicitní deklarace závislostí je použita jednotně pro produkci i vývoj.

Například [Bundler](https://bundler.io/) pro Ruby poskytuje `Gemfile` manifest formát pro deklaraci závislostí a `bundle exec` pro izolaci závislostí. Pro Python jsou to dva rozdílné nástroje, [Pip](http://www.pip-installer.org/en/latest/) je použit pro deklaraci závislostí a [Virtualenv](http://www.virtualenv.org/en/latest/) pro jejich izolaci. Dokonce i C má [Autoconf](http://www.gnu.org/s/autoconf/) pro deklaraci závislostí a statické linkování poskytuje izolaci závislostí. Nehledě na použitou sadu nástrojů, deklarace a izolace závislostí musí být vždy aplikovány společně, použití pouze jednoho nebo pouze druhého není dostatečné pro splnění podmínek twelve-factor metodiky.

Jednou z výhod explicitní deklarace závislostí je to, že zjednodušuje počáteční rozběhnutí aplikace pro nové vývojáře. Nový vývojář si jen naklonuje repozitář aplikace do svého vývojového prostředí a jako prerekvizity mu postačí nainstalované běhové prostředí jazyka a příslušný správce závislostí. Vše potřebné pro rozběhnutí aplikace se zajistí deterministicky *build příkazem* . Například, build příkaz pro Ruby/Bundler je `bundle install`, pro Cloujure/[Leiningen](https://github.com/technomancy/leiningen#readme) je to `lein deps`.

Twelve-factor aplikace se nespoléhají na implicitní existenci jakýchkoli systémových nástrojů. Příkladem může být spouštění ImageMagick nebo `curl` přes shell. I když tyto nástroje existují na mnoha a možná i většině aktuálně používaných systémů, neexistuje žadná záruka, že tyto nástroje budou existovat na systémech, kde aplikace poběží v budoucnu a nebo že budou na budoucích systémech dostupné v kompatibilní verzi. Pokud aplikace potřebuje spouštět nějaký nástroj přes shell, tak by měl být daný nástroj součástí aplikace.
