Blog

Les principes de base de composer

Dans un article précèdent je présentais l’outil en expliquant en quoi il pouvait apporter un gain significatif à vos projets web. Désormais nous allons voir comment l’utiliser au quotidien.

Composer peut s’utiliser de plusieurs façons:

  1. Initialiser un projet web en partant de rien « From Scratch »
  2. Initialiser un bundle pouvant être utilisé sur votre framework préféré
  3. Initialiser un module communautaire pour un CMS
  4. Installer des paquets tiers, en dépendances, pour les utiliser dans vos projets
  5. Mettre à jour un ou plusieurs paquets
  6. Tout mettre à jour
  7. Initialiser un projet au travers d’un template (ou boilerplate)
  8. etc… etc…

Vous l’aurez donc compris, les usages sont multiples et variés, mais ici on va s’attarder sur les commandes les plus communes qui vous permettront de le prendre en main rapidement.

Installation de l’outil

Cette étape est aussi simple qu’elle est rapide, il suffit de suivre la procédure détaillée ici.

Elle sera différente en fonction du SE de votre environnement de travail, mais vous permettra dans tous les cas de l’utiliser en ligne de commande.

L’initialisation « From Scratch »

> composer init

Elle vous permettra d’initialiser votre projet en partant de rien. Bien entendu, celui-ci sera « vierge », vous l’utiliserez généralement lorsque vous démarrerez des projets « maisons », des bundles, des modules communautaires etc…

Cette commande est interactive. Durant le processus d’initialisation, certaines informations vous seront demandées. Après utilisation, vous noterez la présence d’un nouveau fichier composer.json. Ce fichier contiendra toutes les informations saisies précédemment.

{
    "name": "adrienruiz/test",
    "type": "library",
    "authors": [
        {"name": "Adrien RUIZ", "email": "[email protected]"}
    ],
    "require": {}
}

L’ajout de dépendances

> composer require symfony/http-foundation

Ou pour cibler une version particulière :

> composer require symfony/http-foundation:4.4.10

Cette commande aura pour effet de télécharger le paquet indiqué, et de placer son contenu dans un répertoire vendor, mais pas que 😎 !

Par défaut, composer récupère les paquets depuis le repository packagist.org, vous verrez plus en détail comment sur un autre de mes articles.

Si vous vous rendez sur la page du repository de ce paquet, vous constaterez la présence de plusieurs dépendances, donc composer a téléchargé pour vous toutes les dépendances du paquet symfony/http-foundation, mis à jour le fichier composer.json et, par la même occasion, a créé un nouveau fichier composer.lock.

Le fichier composer.lock va référencer tous les paquets téléchargés (directement ou indirectement) et les bloquer dans des versions précises (les versions stables disponibles au moment où la commande a été lancée). C’est pour cela qu’il est important de toujours ajouter une dépendance en ligne de commande et ne jamais éditer le fichier composer.json directement à la main.

Utilisation de template (ou boilerplate)

L’utilisation de boilerplate peut être réalisée aussi bien au niveau framework qu’au niveau CMS.

Avec Symfony par exemple :

> composer create-project symfony/website-skeleton my_project_name

Cette commande, tirée de la documentation officielle, aura pour effet de télécharger les paquets essentiels à l’initialisation d’un projet sous Symfony, et aussi en créant une architecture de fichiers qui lui est propre.

Il en va de même avec les CMS Drupal et WordPress par exemple.

Sous Drupal :

> composer create-project drupal/recommended-project my_project_name

Sous WordPress :

> composer create-project roots/bedrock my_project_name

Vous noterez que la documentation officielle de WordPress ne propose pas une initialisation via composer, j’ai surtout l’impression que ce mode opératoire est proposé par des adeptes désireux d’optimiser cette approche.

Mise à jour de paquets

La mise à jour est relativement simple et se fait aussi en ligne de commande.

> composer update symfony/http-foundation

Ce processus est sensiblement le même d’un projet à l’autre, d’un framework ou CMS à l’autre, mais il est vivement conseillé de vous documenter avant de réaliser ce type d’opération, il faut y être préparé 💪. A noter, il est souvent nécessaire de lancer des commandes complémentaires, par exemple pour réaliser des mises à jour en base de données. Renseignez-vous 🤓 !

Composer sur des projets existant

Lorsque vous démarrerez un projet avec un passif plus ou moins lourd, l’approche sera légèrement différente. Le projet sera probablement versionné sous Git, hébergé sur Github, Gitlab ou encore Bitbucket (je l’espère pour vous).

Vous aurez simplement besoin de :

  1. Cloner le projet sur votre environnement de travail
  2. Lancer la commande composer install, qui va s’occuper de télécharger les paquets référencés dans composer.json dans les versions bloquées du composer.lock
  3. Et probablement de lancer d’autres commandes propres au framework ou au CMS

Comme je l’ai déjà évoqué ici, avec composer on ne versionne que le strict nécessaire, les sources techniques propres au projet, généralement des modules dédiés qu’on ne pourra probablement jamais utiliser sur d’autres projets, et surtout un thème … et rien de plus ! Magnifique 🤩 !