Vždy když v Composeru pracujeme s názvem repozitáře, například tracy/tracy, Composer musí vědět, na jaký repozitář tento název odkazuje. Pro tento účel slouží centrální Composer repozitář Packagist.org. Všechny repozitáře zde ale odkazují na veřejné repozitáře a i obsah celého Packagist.org je veřejný. Pokud chceme distribuovat balíky privátně, například v rámci firmy, můžeme si stáhnout Satis.
Satis je samostatný projekt od stejných autorů jako Composer a Packagist. Má naprosto stejnou funkci jako Packagist, ale můžeme si ho nainstalovat na vlastní server, nebo lokálně na vlastní počítač. Stejně jako Packagist umí pracovat s Git, Subvesion a Mercurial repozitáři.
Pokud tedy zadáme:
composer require tracy/tracy
Composer se podívá do centrálního repozitáře Packagist.org, kde najde, že repozitář má URL https://github.com/nette/tracy a odtud balík stáhne.
Instalace Satis
Satis je ke stažení přímo z GitHubu na adrese https://github.com/composer/satis, nebo ho můžeme nainstalovat přes Composer. Pro provoz je potřeba webový server s podporou PHP - Nastavení serveru Apache na MacOS. Přejdeme do adresáře, který je dostupný přes webový server a zadáme:
mkdir satis
composer create-project composer/satis directory --stability=dev
kde directory nahradíme názvem složky, kde má být Satis uložen. Nyní je Satis nainstalovaný a můžeme do něho přidat naše repozitáře.
Přidávní repozitáře do Satis
Nejdříve musíme vytvořit konfigurační soubor, kde bude uložen seznam dostupných repozitářů. Vytvoříme soubor satis.json s následujícím obsahem:
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
{ "type": "vcs", "url": "http://github.com/mycompany/privaterepo" },
{ "type": "vcs", "url": "http://svn.example.org/private/repo" }
],
"require-all": true
}
Název satis.json je výchozí, soubor si můžeme pojmenovat jak chceme. V sekci repositories uvedeme všechny repozitáře, které chceme mít přes Satis dostupné.
Každý repozitář, který chceme publikovat přes Satis nebo Packagist.org musí mít v kořenové složce umístěn soubor composer.json, který obsahuje základní meta-data o repozitáři, podle kterých je Satis zavede do svého indexu. Takový soubor může vypadat takto:
Obsahuje název repozitáře, všechny závislosti na další knihovny, autora, licenci a další informace nutné pro běh. Tento soubor lze jednoduše vytvořit příkazem:
composer init
A dále se nám může hodit příkaz:
composer validate
který nám zkontroluje, jestli je soubor composer.json validní. Takto připravený repozitář se souborem composer.json můžeme přidat do konfiguračního souboru Satis.
Kompilace Satis
Nyní když máme Satis nainstalovaný a přidali jsme všechny repozitáře, musíme Satis zkompilovat. To provedeme příkazem:
php bin/satis build satis.json _build
kde satis.json je konfigurační soubor a _build je název adresáře, kde bude Satis dostupný. Nyní je vše připraveno, můžeme si zobrazit Satis přes prohlížeč například na adrese http://localhost/Satis/_build/.
Vidíme seznam repozitářů které jsme do Satise přidali a můžeme v nich vyhledávat. Pokud máme Satis verzovaný přes Git a používáme nějaký CI server, např. Jenkins, build se nám může provádět automaticky při každém push do repozitáře. Nemusíme se tak o nic starat.
Přidání Satis repozitáře do našeho projektu
Když už nám Satis běží, musíme Composeru říct, aby hledal nejenom na Packagist.org, ale také v našem Satis repozitáři. V rámci projektu, kde chceme Satis používat vytvoříme soubor composer.json, nebo do něho přidáme následující řádky:
{
"repositories": [
{
"type": "composer",
"url": "http://localhost/Satis/"
}
]
}
Nyní můžeme vyzkoušet vyhledat nějaký privátní repozitář, který jsme přidávali do konfigurace Satise:
composer search repository-name
Mělo by nám to repozitář najít a vypsat do konzole. Repozitář můžeme nainstalovat:
composer require repository-name
Kompletní instalační návod najedete na https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md