Table des matières

Composer

C'est un gestionnaire de dépendance libre écrit en PHP. Il permet à ses utilisateurs de déclarer et d'installer les bibliothèques dont le projet principal a besoin.

Commandes utiles

composer self-update
# Ou
composer selfupdate

Cette commande va ajouter un paquet dans la configuration dans la section appropriée.

# Ajout d'un paquet pour l'ensemble des environnements.
composer require -- <paquet>
 
# Ajout d'un paquet pour l'environnement de développement.
composer require --dev -- <paquet>
 
# Ajout d'un paquet en spécifiant sa version.
# La version est gérée par les contraintes. Voir plus bas comment gérer les contraintes (lien externe).
composer require -- <paquet>:<contrainte>
# Pour utiliser une branche de développement
composer require -- <paquet>:dev-<branch>

Cette commande va mettre les bibliothèques à jour avec la dernière version disponible.

# Pour faire une mise à jour complète
composer update
 
# Pour faire une mise à jour partielle
composer update -- <paquet>

Lors de la mise à jour d'une bibliothèque ayant des dépendances bloquantes, il faut lister également les dépendances. Par exemple :

composer update -- friendsofsymfony/elastica-bundle ruflin/elastica

Cette commande va créer le fichier composer.lock s'il n'existe pas. Si le fichier composer.lock existe, les bibliothèques seront mise à jour avec la version spécifiée dans le dit fichier.

# Pour faire une installation complète
composer install
 
# Pour faire une installation partielle
composer install -- <paquet>

Cette commande affiche les informations détaillées des bibliothèques disponibles.

# Affiche toutes les bibliothèques
composer show
 
# Affiche les bibliothèques installées
composer show -i
 
# Affiche les extensions installées
composer show -p

Installer un dépôt Composer local

Pour héberger et distribuer soi-même ses bibliothèques avec Composer, il est nécessaire de mettre en place un serveur. Satis permet de faire cela facilement.

Installer Satis

Rien de plus simple. Pour cela, il suffit d'utiliser Composer.

composer create-project composer/satis --stability=dev --keep-vcs

Cette commande va créer un répertoire satis qui contiendra le programme, la configuration du serveur ainsi que les bibliothèques.
Comme les bibliothèques seront distribuées par le serveur web, il est recommander d'exécuter la commande dans un répertoire accessible à l'utilisateur utilisé pour démarrer ce dernier.

Configurer Satis

La configuration se fait dans un fichier JSON à la racine du répertoire d'installation. Son nom n'a pas d'importance. Par défaut, satis.json sera utilisé.

Voici la configuration de base :

{
    "name": "Bibliothèque AINW",
    "homepage": "http://composer.ainw.org",
    "repositories": [
        { "type": "git", "url": "ssh://git.ainw.org/AinwBundle" }
    ],
    "require": {
        "ainw/ainw-bundle": "*"
    },
    "require-dependencies": false
}

Il est possible d'utiliser Satis pour héberger localement des bibliothèques distribuées. Pour cela, il faut modifier le fichier de configuration précédent :

{
    "name": "Bibliothèque AINW",
    "homepage": "http://composer.ainw.org",
    "repositories": [
        { "type": "git", "url": "ssh://git.ainw.org/AinwBundle" },
        { "type": "composer", "url": "https://packagist.org" }
    ],
    "require": {
        "ainw/ainw-bundle": "*",
        "phpunit/phpunit": "*",
    },
    "require-dependencies": true,
    "archive": {
        "directory": "archives"
    }
}

Générer le dépôt

Il suffit de lancer la commande suivante :

php bin/satis build <config.json> web/

Comme le dépôt est statique, il faut le générer régulièrement pour récupérer les dernières versions des bibliothèques hébergées.

Pour aller plus loin

Déclenchement d'actions externes

Lors de l'utilisation de la commande composer, il est possible de déclencher des actions extérieures en fonction de différents évènements. Il existe 4 types d'évènements 1):

Par exemple, on peut déclencher des actions après installation :

"scripts": {
    "post-install-cmd": [
        "ls -lh"
    ]
}

Dans ce cas, le script se déclenchera à la fin de chaque commande d'installation. Il est aussi possible de déclencher uniquement le script avec la commande suivante :

composer run-script post-install-cmd

Liens utiles