Přidání balíčku do Composeru bez Packagist

Pavel PHP

Composer umožňuje přidat balíček, který není zveřejněn na Packagist. Stačí, aby byl ve veřejném či privátním git repozitáři, dostupný lokálně na serveru v jiné složce nebo jako zip uložen někde online. Ideální způsob, jak balíčky testovat při vývoji.

Přidání balíčku do Composeru bez Packagist

Když jsem chtěl publikovat na Packagist vlastní validační pravidlo PasswordRule pro Laravel, potřeboval jsem otestovat správnou funkčnost Package discovery. Nechtělo se mi ale každou sebemenší změnu dávat na git kvůli testování. Naštěstí to není potřeba, balíčky do Composeru lze přidat i jinak, než přes git a Packagist.

Článek nepřímo navazuje na dřívější články Composer - řešení závislostí a Publikace na Packagist.

Repositories v composer.json

Composer v základu používá pouze 1 repozitář, ve kterém hledá všechny balíčky a tím je Packagist. Nic ale nebrání přidat další repozitáře, i podporovaných protokolů je více. Základní je samozřejmě git, při nainstalovaném Mercurialu nebo SVN lze použít i tyto systémy. Podporuje ale také lokální cestu nebo URL adresu pro stahování.

Hlavní výhoda při určení vlastních repozitářů je ta, že lze, i jen dočasně, použít vlastní verzi již existující knihovny. V kódu níže je stažena knihovna Monolog z vlastního git repozitáře. Po odstranění repositories atributu se opět balíček stáhne z Packagistu.

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/myOwnGithubAccount/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

Type: path - lokální balíček

Pokud balíček není ještě ani na gitu, lze jej do projektu přidat pomocí absolutní nebo relativní cesty. Tuto metodu jsem použil také já. Nejlepší je, že Composer se pokusí vytvořit symbolický odkaz, takže při úpravě balíčku se změny okamžitě projeví všude a není potřeba provádět composer update.

{
    "repositories": [
        {
            "type": "path",
            "url": "../PasswordRule"
        }
    ],
    "require": {
        "arxeiss/passwordrule": "*"
    }
}

Type: package - instalace neexistujícího balíčku

Někdy jen je potřeba přidat do projektu zdrojové kódy, které nemají svůj composer.json soubor a tím pádem nejsou reálným balíčkem. I na toto je myšleno a lze vytvořit balíček virtuální, který stáhne data z URL adresy případně CVS.

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "nick/package",
                "version": "1.2.7",
                "dist": {
                    "url": "http://www.kutac.cz/MyNickPackage.zip",
                    "type": "zip"
                },
                "autoload": {
                    "classmap": ["libs/"]
                }
            }
        }
    ],
    "require": {
        "nick/package": "^1.0"
    }
}

Jak na privátní repozitáře a další možnosti

Možností co lze dělat za kouzla je samozřejmě více. Nejdůležitější může být přístup do privátních a zaheslovaných git repozitářů. Kompletní seznam funkcionalit je popsán v oficiální dokumentaci Composeru.


Používáte Composer jinak, než je zde napsáno? Podělte se v komentářích o zkušenosti

Přidat komentář

Právě odpovídáte na existující komentář. Zrušit

Komentáře

Novinky z blogu

Zachycení událostí CSS animací v Javascriptu

CSS animace dokázaly na mnoha místech nahradit Javascript, který byl dříve jedinou schůdnou možností. Nejen pro svou jednoduchost jsou stále populárnější. Jenže co, když chci...

Další články