Installer Drupal 8 avec composer

Aujourd'hui composer semble s'imposer comme la manière 'recommandée' pour installer (ou plus précisément de télécharger) Drupal 8, tant pour le cœur de Drupal mais aussi pour les modules comme pour les thèmes.

Donc, pour commencer un nouveau projet sous Drupal 8, nous devrons télécharger le code avec composer et non plus avec Drush ou Drupal Console comme nous le faisions dans le passé. Bien entendu, nous pouvons toujours utiliser Drush ou DC pour activer (ou installer) les modules ou thèmes contrib, mais pas pour les télécharger.

Le principal atout de composer est de pouvoir administrer une liste toujours plus étendue de dépendances (comme de leurs sous-dépendances) et ainsi de s'assurer que les bonnes versions de chaque 'package' soient utilisées ou actualisées.

Il existe un template officiel pour installer Drupal 8 avec composer. Nous allons donc créer notre projet Drupal directement avec ce template qui est aussi disponible sur Packagist.

Installer composer

Tout d'abord il vous faudra installer Composer. Je vous invite à jeter un coup d'oeil sur Getting Started getcomposer.org pour installer Composer.

Installer Drupal 8 avec Composer

Pour créer un nouveau project Drupal 8 basé sur le template officiel, lancez la commande suivante:

# Lancer la commande composer create-project
composer create-project drupal-composer/drupal-project:8.x-dev my_project_name_dir --stability dev --no-interaction
# Se placer sur my_project_name_dir
cd my_project_name_dir
# Installer Drupal avec DrupalConsole
drupal site:install

N'oubliez pas de changer 'my_project_name_dir' avec le nom du répertoire où vous voulez installer Drupal.

Cette commande téléchargera le projet drupal-composer/drupal-project depuis Packagist dans le répertoire 'my_project_name_dir'. Elle exécutera automatiquement composer install qui téléchargera Drupal 8 et toutes ses dépendances.

En fait cette commande create-project de composer est équivalent à faire un git clone https://github.com/drupal-composer/drupal-project.git  my_project_name_dir suivit d'un composer install.

# create-project est équivalent à git clone et à composer install
git clone https://github.com/drupal-composer/drupal-project.git my_project_name_dir
composer install

Que fait ce template?

Lorsque vous installer le composer.json certaines tâches sont exécutées:

  • Drupal 8 est téléchargé dans le répertoire web/
  • Autoloader est activé pour utiliser le composer autoloader dans vendor/autoload.php au lieu de celui qui vient par défaut avec Drupal (web/vendor/autoload.php)
  • Les Modules (packages de type drupal-module) seront placés dans web/modules/contrib/
  • Les Thèmes (packages de type drupal-theme) seront placés dans web/themes/contrib/
  • Les Profiles (packages de type drupal-profile) seront placés dans web/profiles/contrib/
  • Créer les fichiers settings.php and services.yml
  • Créer le répertoire  web/sites/default/files
  • Installer la dernière version de Drush dans  vendor/bin/drush
  • Installer la dernière version de DrupalConsole (super !!!) dans vendor/bin/drupal.
  • Créer les variables d'environnement sur base du fichier .env. Voyez le ficher .env.example.

Notez bien que Drupal será installé dans le répertoire 'my_project_name_dir/web/'

Ce template vient aussi avec un fichier .gitignore qui ne prendra pas en compte le cœur de Drupal et les packages contrib (modules, thèmes, vendors …) dans le versionement de Git. Cela nous permettra d'avoir un repo Git plus petit et de passer notre projet à différents stages sans difficultés.

Et si je ne veux pas installer Drupal dans le répertoire web/?

Imaginons que nous devions installer Drupal dans le répertoire docroot/ au lieu de web/.

Dans ce cas nous feront ce qui suit:

# 1. Télécharger le template du projet avec git
git clone https://github.com/drupal-composer/drupal-project.git my_project_name_dir

# 2. Changer les 'installer-paths' dans la section 'extra' de notre composer.json
cd my_project_name_dir
vi composer.json

# 3. Lancer composer install 
composer install

Installer le projet Drupal

Comme nous l'avons vu plus haut, une fois que nous avons téléchargé le projet Drupal avec composer, nous pouvons installer Drupal avec la commande de DrupalConsole drupal site:install ou bien aller directement sur notre site local (localhost://) pour installer notre site.