Outils pour utilisateurs

Outils du site


informatique:langages:php:composer

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
informatique:langages:php:composer [2025/01/02 09:28] – supprimée - modification externe (Date inconnue) 127.0.0.1informatique:langages:php:composer [2025/01/02 09:28] (Version actuelle) – ↷ Page déplacée de informatique:php:composer à informatique:langages:php:composer alexis
Ligne 1: Ligne 1:
 +====== Composer ======
 +{{ :informatique:logo:composer.png?nolink&100|}}
 +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 =====
 +  * Mise à jour de Composer
 +<WRAP prewrap>
 +<code bash>
 +composer self-update
 +# Ou
 +composer selfupdate
 +</code>
 +</WRAP>
 +
 +  * Ajout d'un paquet dans la configuration
 +Cette commande va ajouter un paquet dans la configuration dans la section appropriée.
 +<WRAP prewrap>
 +<code bash>
 +# 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>
 +</code>
 +</WRAP>
 +
 +  * Mise à jour des bibliothèques
 +Cette commande va mettre les bibliothèques à jour avec la dernière version disponible.
 +<WRAP prewrap>
 +<code bash>
 +# Pour faire une mise à jour complète
 +composer update
 +
 +# Pour faire une mise à jour partielle
 +composer update -- <paquet>
 +</code>
 +</WRAP>
 +
 +<WRAP tip>
 +Lors de la mise à jour d'une bibliothèque ayant des dépendances bloquantes, il faut lister également les dépendances. Par exemple :
 +<WRAP prewrap>
 +<code bash>
 +composer update -- friendsofsymfony/elastica-bundle ruflin/elastica
 +</code>
 +</WRAP>
 +</WRAP>
 +
 +  * Installation des bibliothèques
 +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.
 +<WRAP prewrap>
 +<code bash>
 +# Pour faire une installation complète
 +composer install
 +
 +# Pour faire une installation partielle
 +composer install -- <paquet>
 +</code>
 +</WRAP>
 +
 +  * Affichage des bibliothèques
 +Cette commande affiche les informations détaillées des bibliothèques disponibles.
 +<WRAP prewrap>
 +<code bash>
 +# Affiche toutes les bibliothèques
 +composer show
 +
 +# Affiche les bibliothèques installées
 +composer show -i
 +
 +# Affiche les extensions installées
 +composer show -p
 +</code>
 +</WRAP>
 +
 +===== 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. [[https://github.com/composer/satis|Satis]] permet de faire cela facilement.
 +
 +==== Installer Satis ====
 +Rien de plus simple. Pour cela, il suffit d'utiliser Composer.
 +<WRAP prewrap>
 +<code bash>
 +composer create-project composer/satis --stability=dev --keep-vcs
 +</code>
 +</WRAP>
 +
 +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 :
 +
 +<WRAP prewrap>
 +<code javascript>
 +{
 +    "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
 +}
 +</code>
 +</WRAP>
 +
 +  * //name// contient le nom du serveur qui sera affiché.
 +  * //homepage// est l'URL à utiliser dans la configuration de Composer.
 +  * //repositories// contient la liste des dépôts de bibliothèques.
 +  * //require// contient la liste des bibliothèques à distribuer, ainsi que leur version. L'utilisation de //*// permet de récupérer l'ensemble des versions disponibles.
 +  * //require-dependencies// indique si les dépendances doivent être hébergées.
 +
 +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 :
 +
 +<WRAP prewrap>
 +<code javascript>
 +{
 +    "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"
 +    }
 +}
 +</code>
 +</WRAP>
 +
 +  * //archive// indique que les bibliothèques sont archivées. Il est possible de choisir le type d'archive, l'URL de distribution des archives ainsi que le répertoire de stockage (voir [[https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#downloads|la documentation]])
 +
 +==== Générer le dépôt ====
 +Il suffit de lancer la commande suivante :
 +<WRAP prewrap>
 +<code bash>
 +php bin/satis build <config.json> web/
 +</code>
 +</WRAP>
 +
 +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 ====
 +  * [[https://github.com/composer/composer/issues/1795#issuecomment-17621692|Configurer Satis avec SSH et Git]]
 +  * [[http://code.tutsplus.com/tutorials/setting-up-a-local-mirror-for-composer-packages-with-satis--net-36726|Installer un dépôt local avec Satis]]. Contient le code pour mettre à jour la configuration automatiquement si une bibliothèque n'est pas encore présente.
 +
 +===== 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 (([[https://getcomposer.org/doc/articles/scripts.md#event-names|Nom des évènements]])):
 +  * les évènements sur la commande elle même.
 +  * les évènements sur l'installeur.
 +  * les évènements sur les packages.
 +  * les évènements sur les plugins.
 +
 +Par exemple, on peut déclencher des actions après installation :
 +
 +<WRAP prewrap>
 +<code javascript>
 +"scripts": {
 +    "post-install-cmd": [
 +        "ls -lh"
 +    ]
 +}
 +</code>
 +</WRAP>
 +
 +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 :
 +<WRAP prewrap>
 +<code bash>
 +composer run-script post-install-cmd
 +</code>
 +</WRAP>
 +
 +===== Liens utiles =====
 +  * [[https://getcomposer.org/|Site officiel]]
 +  * [[https://packagist.org/|Archive principale de bibliothèques]]
 +  * [[http://www.dev-metal.com/install-update-composer-windows-7-ubuntu-debian-centos/|How to install Composer (and update) on Windows 7 / 8 or Ubuntu / Debian]]
 +  * [[https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md|Handling private packages with Satis or Toran Proxy]]
 +  * [[https://igor.io/2013/01/07/composer-versioning.html|Understanding Composer version constraints]]