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.
🤔 Pourquoi Composer ?
Section intitulée « 🤔 Pourquoi Composer ? »Avant Composer (Drupal 7 et avant)
Section intitulée « Avant Composer (Drupal 7 et avant) »- ❌ 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
Avec Composer (Drupal 8+)
Section intitulée « Avec Composer (Drupal 8+) »- ✅ 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
📦 Les fichiers Composer
Section intitulée « 📦 Les fichiers Composer »composer.json
Section intitulée « composer.json »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"] } }}Sections importantes
Section intitulée « Sections importantes »| Section | Description |
|---|---|
require | Dépendances de production |
require-dev | Dépendances de développement uniquement |
extra.installer-paths | Où installer les packages Drupal |
extra.drupal-scaffold | Configuration du scaffolding |
composer.lock
Section intitulée « composer.lock »Fichier généré automatiquement qui verrouille les versions exactes de toutes les dépendances.
🛠️ Commandes Composer essentielles
Section intitulée « 🛠️ Commandes Composer essentielles »Créer un nouveau projet
Section intitulée « Créer un nouveau projet »composer create-project drupal/recommended-project:^11.0 mon-projetdrupal/recommended-project: Template officiel Drupal^11.0: Version 11.x (dernière version 11)
Installer les dépendances
Section intitulée « Installer les dépendances »# Installer depuis composer.lock (recommandé en production)composer install
# Mettre à jour les dépendances selon composer.jsoncomposer updateAjouter un module
Section intitulée « Ajouter un module »# Ajouter un module Drupalcomposer require drupal/pathauto
# Ajouter une version spécifiquecomposer require drupal/pathauto:^1.12
# Ajouter en dev uniquementcomposer require --dev drupal/develMettre à jour
Section intitulée « Mettre à jour »# Mettre à jour toutcomposer update
# Mettre à jour un package spécifiquecomposer update drupal/core-recommended --with-dependencies
# Voir les mises à jour disponiblescomposer outdatedSupprimer un package
Section intitulée « Supprimer un package »composer remove drupal/pathautoCommandes utiles
Section intitulée « Commandes utiles »# Afficher les packages installéscomposer show
# Afficher un package spécifiquecomposer show drupal/core
# Vérifier les problèmescomposer diagnose
# Vider le cache Composercomposer clear-cache🔒 Versionnement sémantique
Section intitulée « 🔒 Versionnement sémantique »Composer utilise le versionnement sémantique :
MAJOR.MINOR.PATCH 11 . 0 . 1| Préfixe | Signification | Exemple |
|---|---|---|
^ | Compatible MAJOR | ^11.0 → 11.x.x |
~ | Compatible MINOR | ~11.0.1 → 11.0.x |
>= | Version minimale | >=11.0 |
* | N’importe quelle version | Non recommandé |
📁 Structure après installation
Section intitulée « 📁 Structure après installation »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🎯 Installer les modules essentiels
Section intitulée « 🎯 Installer les modules essentiels »Pour notre projet TailStore, installons les modules de base :
# Dans le dossier du projetcd tailstore
# Modules contributifs essentielscomposer require drupal/admin_toolbarcomposer require drupal/pathautocomposer require drupal/tokencomposer require drupal/webformcomposer require drupal/metatag
# Module de développementcomposer require --dev drupal/devel🔄 Workflow quotidien
Section intitulée « 🔄 Workflow quotidien »-
Récupérer le code (si vous travaillez en équipe)
Fenêtre de terminal git pullcomposer installdrush updb -ydrush cim -ydrush cr -
Ajouter une fonctionnalité
Fenêtre de terminal composer require drupal/nouveau_moduledrush en nouveau_module -ydrush cex -ygit add -Agit commit -m "feat: add nouveau_module" -
Mettre à jour Drupal
Fenêtre de terminal composer update drupal/core-recommended --with-dependenciesdrush updb -ydrush cr# Tester le sitegit add -Agit commit -m "chore: update Drupal core"
⚠️ Bonnes pratiques
Section intitulée « ⚠️ Bonnes pratiques »À faire ✅
Section intitulée « À faire ✅ »- Commiter
composer.jsonETcomposer.lock - Utiliser
composer installen production - Verrouiller les versions majeures (
^11.0) - Tester après chaque
composer update
À éviter ❌
Section intitulée « À éviter ❌ »- Ne jamais modifier les fichiers dans
vendor/ - Ne pas commiter le dossier
vendor/ - Ne pas utiliser
composer updateen production - Ne pas mélanger téléchargements manuels et Composer
🐛 Résolution de problèmes
Section intitulée « 🐛 Résolution de problèmes »Conflit de dépendances
Section intitulée « Conflit de dépendances »# Voir les conflitscomposer why-not drupal/some-module
# Forcer une mise à jourcomposer update --with-all-dependenciesMémoire insuffisante
Section intitulée « Mémoire insuffisante »# Augmenter la limite mémoire pour cette commandephp -d memory_limit=-1 /usr/local/bin/composer updateCache corrompu
Section intitulée « Cache corrompu »composer clear-cacherm -rf vendorcomposer install✅ Exercice pratique
Section intitulée « ✅ Exercice pratique »Installez les modules suivants avec Composer :
drupal/admin_toolbar- Barre d’administration amélioréedrupal/pathauto- URLs automatiquesdrupal/token- Jetons pour pathautodrupal/metatag- Méta-tags SEO
Commandes :
composer require drupal/admin_toolbar drupal/pathauto drupal/token drupal/metatagVérifiez avec :
composer show drupal/*🔤 Comprendre le PSR-4
Section intitulée « 🔤 Comprendre le PSR-4 »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.
Avant (sans Composer/PSR-4)
Section intitulée « Avant (sans Composer/PSR-4) »require_once 'includes/MyClass.php';$obj = new MyClass();Avec Composer et PSR-4
Section intitulée « Avec Composer et PSR-4 »// 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:
- PSR-4 sur PHP-FIG - La spécification officielle
- Autoloading dans la documentation Composer
🚀 Étape suivante
Section intitulée « 🚀 Étape suivante »Passez à la Structure des fichiers pour comprendre l’organisation d’un projet Drupal.