Utilisation de Composer

05/01/2014

Composer est un gestionnaire de dépendances PHP. Par défaut, les packages sont cherchés sur Packagist.

Un projet géré par composer contient 2 fichiers: * composer.json contient les contraintes de versions des dépendances (symfony 2.4.* par exemple) * composer.lock contient les versions exactes des dépendances (symfony 2.4.1 par exemple)

Installation

Pour télécharger composer.phar dans le dossier courant bash $ curl -sS https://getcomposer.org/installer | php

Pour mettre à jour composer.phar bash $ php composer.phar self-update

Gestion du projet

Pour créer le fichier composer.json, contenant les contraintes de versions des dépendances: bash $ php composer.phar init

Pour valider le fichier après modification: bash $ php composer.phar validate

Déclaration des dépendances

Pour ajouter une dépendance pour l’utilisation du projet (section “require” de composer.json): bash $ php composer.phar require symfony/symfony:"2.4.*@stable"

Pour ajouter une dépendance pour le developpement du projet (section “require-dev” de composer.json): bash $ php composer.phar require --dev phing/phing:"*@stable"

Mise à jour des dépendances

Pour mettre à jour toutes les dépendances et créer le fichier composer.lock contenant les versions précises des dépendances installées: bash $ php composer.phar update

Installation des dépendances:

Pour installer toutes les dépendances dans les versions précisées dans composer.lock: bash $ php composer.phar install

Installation des dépendances pour une mise en production:

Pour installer uniquement les dépendances nécessaires en production: bash $ php composer.phar install --no-dev --optimize-autoloader

Targets phing

<?xml version="1.0" encoding="UTF-8"?>
<project name="my_project" basedir="." default="composer:install">

    <!-- Installer ou mettre à jour composer.phar -->
    <target name="install:composer"
            description="Installer ou mettre à jour composer.phar">
        <if>
            <available file="composer.phar"/>
            <then>
                <composer command="self-update" />
            </then>
            <else>
                <exec command="curl -s https://getcomposer.org/installer | php"/>
            </else>
        </if>
    </target>

    <!-- Mettre à jour les dépendances -->
    <target name="composer:update"
            depends="install:composer"
            description="Mettre à jour les dépendances">
        <composer command="update" />
    </target>

    <!-- Installer les dépendances -->
    <target name="composer:install"
            depends="install:composer"
            description="Installer les dépendances">
        <composer command="install" />
    </target>

    <!-- Installer les dépendances pour la production-->
    <target name="composer:deploy"
            depends="install:composer"
            description="Installer les dépendances pour la production">
        <composer command="install">
            <arg value="--no-dev" />
            <arg value="--optimize-autoloader" />
        </composer>
        <exec command="find ./vendor -name '.git' -exec rm -rf {} \;" passthru="true"/>
    </target>
</project>