Aller au contenu

Installation avec Composer

Composer est le gestionnaire de dépendances standard pour PHP. C’est l’outil obligatoire pour installer et maintenir un projet Drupal 11 moderne.

  • ❌ Téléchargement manuel des modules depuis drupal.org
  • ❌ Gestion manuelle des mises à jour
  • ❌ Conflits de dépendances fréquents
  • ❌ Pas de versionnement des dépendances
  • ✅ Installation automatique des modules et leurs dépendances
  • ✅ Mises à jour simples avec une seule commande
  • ✅ Versions verrouillées dans composer.lock
  • ✅ Reproducibilité parfaite entre environnements
  • ✅ Autoloading PSR-4 automatique

Le fichier de configuration principal qui décrit votre projet :

{
"name": "drupal/recommended-project",
"description": "Project template for Drupal projects",
"type": "project",
"license": "GPL-2.0-or-later",
"require": {
"drupal/core-recommended": "^11.0",
"drupal/core-composer-scaffold": "^11.0",
"drush/drush": "^13.0"
},
"require-dev": {
"drupal/core-dev": "^11.0"
},
"extra": {
"drupal-scaffold": {
"locations": {
"web-root": "web/"
}
},
"installer-paths": {
"web/core": ["type:drupal-core"],
"web/modules/contrib/{$name}": ["type:drupal-module"],
"web/themes/contrib/{$name}": ["type:drupal-theme"],
"web/profiles/contrib/{$name}": ["type:drupal-profile"]
}
}
}
SectionDescription
requireDépendances de production
require-devDépendances de développement uniquement
extra.installer-pathsOù installer les packages Drupal
extra.drupal-scaffoldConfiguration du scaffolding

Fichier généré automatiquement qui verrouille les versions exactes de toutes les dépendances.

Fenêtre de terminal
composer create-project drupal/recommended-project:^11.0 mon-projet
  • drupal/recommended-project : Template officiel Drupal
  • ^11.0 : Version 11.x (dernière version 11)
Fenêtre de terminal
# Installer depuis composer.lock (recommandé en production)
composer install
# Mettre à jour les dépendances selon composer.json
composer update
Fenêtre de terminal
# Ajouter un module Drupal
composer require drupal/pathauto
# Ajouter une version spécifique
composer require drupal/pathauto:^1.12
# Ajouter en dev uniquement
composer require --dev drupal/devel
Fenêtre de terminal
# Mettre à jour tout
composer update
# Mettre à jour un package spécifique
composer update drupal/core-recommended --with-dependencies
# Voir les mises à jour disponibles
composer outdated
Fenêtre de terminal
composer remove drupal/pathauto
Fenêtre de terminal
# Afficher les packages installés
composer show
# Afficher un package spécifique
composer show drupal/core
# Vérifier les problèmes
composer diagnose
# Vider le cache Composer
composer clear-cache

Composer utilise le versionnement sémantique :

MAJOR.MINOR.PATCH
11 . 0 . 1
PréfixeSignificationExemple
^Compatible MAJOR^11.0 → 11.x.x
~Compatible MINOR~11.0.1 → 11.0.x
>=Version minimale>=11.0
*N’importe quelle versionNon recommandé
tailstore/
├── composer.json # Configuration du projet
├── composer.lock # Versions verrouillées
├── vendor/ # Dépendances (NE PAS MODIFIER)
│ ├── autoload.php # Autoloader généré
│ ├── composer/
│ ├── drupal/
│ └── ...
├── web/ # Racine web
│ ├── core/ # Drupal core
│ ├── modules/
│ │ ├── contrib/ # Modules téléchargés
│ │ └── custom/ # Vos modules
│ ├── themes/
│ │ ├── contrib/ # Thèmes téléchargés
│ │ └── custom/ # Vos thèmes
│ └── sites/
└── config/
└── sync/ # Configuration exportée

Pour notre projet TailStore, installons les modules de base :

Fenêtre de terminal
# Dans le dossier du projet
cd tailstore
# Modules contributifs essentiels
composer require drupal/admin_toolbar
composer require drupal/pathauto
composer require drupal/token
composer require drupal/webform
composer require drupal/metatag
# Module de développement
composer require --dev drupal/devel
  1. Récupérer le code (si vous travaillez en équipe)

    Fenêtre de terminal
    git pull
    composer install
    drush updb -y
    drush cim -y
    drush cr
  2. Ajouter une fonctionnalité

    Fenêtre de terminal
    composer require drupal/nouveau_module
    drush en nouveau_module -y
    drush cex -y
    git add -A
    git commit -m "feat: add nouveau_module"
  3. Mettre à jour Drupal

    Fenêtre de terminal
    composer update drupal/core-recommended --with-dependencies
    drush updb -y
    drush cr
    # Tester le site
    git add -A
    git commit -m "chore: update Drupal core"
  • Commiter composer.json ET composer.lock
  • Utiliser composer install en production
  • Verrouiller les versions majeures (^11.0)
  • Tester après chaque composer update
  • Ne jamais modifier les fichiers dans vendor/
  • Ne pas commiter le dossier vendor/
  • Ne pas utiliser composer update en production
  • Ne pas mélanger téléchargements manuels et Composer
Fenêtre de terminal
# Voir les conflits
composer why-not drupal/some-module
# Forcer une mise à jour
composer update --with-all-dependencies
Fenêtre de terminal
# Augmenter la limite mémoire pour cette commande
php -d memory_limit=-1 /usr/local/bin/composer update
Fenêtre de terminal
composer clear-cache
rm -rf vendor
composer install

Installez les modules suivants avec Composer :

  1. drupal/admin_toolbar - Barre d’administration améliorée
  2. drupal/pathauto - URLs automatiques
  3. drupal/token - Jetons pour pathauto
  4. drupal/metatag - Méta-tags SEO

Commandes :

Fenêtre de terminal
composer require drupal/admin_toolbar drupal/pathauto drupal/token drupal/metatag

Vérifiez avec :

Fenêtre de terminal
composer show drupal/*

Le PSR-4 (PHP Standard Recommendation 4) est une norme qui définit comment charger automatiquement les classes PHP. Au lieu d’utiliser require() ou include() manuellement, le PSR-4 permet à Composer de charger les classes automatiquement en fonction de leur namespace.

require_once 'includes/MyClass.php';
$obj = new MyClass();
// Composer charge automatiquement MyClass via vendor/autoload.php
$obj = new MyClass();

Le fichier vendor/autoload.php généré par Composer gère toute cette magie. C’est pourquoi il est essentiel de l’inclure dans le point d’entrée de votre application.

Pour plus de détails, consultez:

Passez à la Structure des fichiers pour comprendre l’organisation d’un projet Drupal.