Composer présente deux outils pour gérer les packages privés : Private Packagist (payant) et Satis.
Satis est un gestionnaire open source de packages comme composer.
Il permet de stocker des packages privés (pour une entreprise par exemple), et de les rendre accessible via composer.
Une fois le paquet installé (suivre la documentation), il faut configurer les repository Git que l’on souhaite rendre disponibles.
Ils doivent être composer-compatible (disposer d’un fichier composer.json
à la racine du projet) et avoir accès au repository Git (mettre le repository public ou gérer un compte authentifié).
{
"name": "utils/fileloader",
"type": "library",
"description": "Permet de charger n'importe quel type de fichier"
}
Il faut ensuite préciser à Satis quels repository scruter, cela se fait via le fichier satis.json
{
"name": "My Company Packages",
"homepage": "http://packages.my.company",
"repositories": [
{ "type": "vcs", "url": "git@vcs.my.company:utils/fileloader.git" },
{ "type": "vcs", "url": "git@vcs.my.company:utils/exporter.git" },
{ "type": "vcs", "url": "git@vcs.my.company:data/mock.git" }
],
"require-all": true
}
Interface web
Il existe une commande qui permet de générer une interface web de vos packages disponibles :
php /var/www/packages/satis/bin/satis build /var/www/packages/satis/satis.json /var/www/packages/satis/web/ -n
Pour plus de souplesse on peut mettre cette commande dans une CRON
0 9-18 * * * php /var/www/packages/satis/bin/satis build /var/www/packages/satis/satis.json /var/www/packages/satis/web/ -n >> /var/log/cron/statis-build.log 2>&1
Les packages sont consultables depuis l’interface web :
Démarrer un projet
En renseignant un nouveau repository dans le fichier composer.json
, composer va en priorité chercher les packages sur l’URL indiquée, puis sur GitHub.
On peut donc mixer des packages privées et des packages plus classiques :
{
"repositories": [
{
"type": "composer",
"url": "http://packages.my.company"
}
],
"require": {
"utils/fileloader": "dev-master",
"utils/exporter": "dev-master",
"data/mock": "dev-master",
"nelmio/api-doc-bundle": "^2.13",
"guzzlehttp/guzzle": "^6.3"
},
"config": {
"minimum-stability": "dev"
}
}