uxf / composer-proxy
Composer plugin redirecting package dist downloads through the internal composer-proxy caching proxy, without touching composer.json or composer.lock.
Package info
Type:composer-plugin
pkg:composer/uxf/composer-proxy
Requires
- php: ^8.1
- composer-plugin-api: ^2.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Composer plugin, který při composer install/composer update přesměruje stahování
dist archivů balíčků přes interní cachující proxy composer-proxy, aniž by jakkoliv
měnil composer.json nebo composer.lock projektu, ve kterém je nainstalovaný.
Řeší výpadky a rate limity (HTTP 429) při paralelních CI pipeline, kdy desítky
jobů stahují stejné dist archivy přímo z gitlab.com a api.github.com.
Install
$ composer require uxf/composer-proxy
V praxi se instaluje globálně do base Docker image (composer global require), ne
do jednotlivých projektů – viz docker-core-images.
Chování
Plugin je aktivní jen tehdy, když je nastavená proměnná prostředí
COMPOSER_DIST_MIRROR (base URL proxy, např. https://proxy.example.com). Bez ní je
plugin no-op a Composer se chová úplně stejně jako bez něj.
Pro každý balíček, který se bude stahovat jako zip, plugin přidá dist mirror
(nepřepisuje originální URL). Composer tak při výpadku proxy automaticky spadne
zpátky na původní stahování z gitlab.com/github.com bez zásahu uživatele.
Proxy dostává požadavky ve tvaru:
{COMPOSER_DIST_MIRROR}/dist/{vendor}/{name}/{reference}.zip?src={urlencoded původní dist URL}
Plugin nic nezapisuje do composer.lock ani do vendor/composer/installed.json –
mirror se po dokončení stahování z balíčku zase odebere.
Pokud proxy vyžaduje autentizaci, předává se přes basic auth přímo v URL
(https://user:token@proxy.example.com); token pak musí být masked CI proměnná.