Customisation d'une installation de Drupal 8 via composer (partie 1)

Après avoir passé 3 jours génial au DrupalCamp de Lannion, j'ai décidé de passer mon site en "full Composer".

Fini l'utilisation de la commande drush dl, Fini les modules contrib dans gitlab.

Compo quoi ?

Selon Wikipedia :

Composer est un gestionnaire de dépendances libre écrit en PHP. Il permet à ses utilisateurs de déclarer et d'installer les bibliothèques dont le projet principal a besoin

Pour celle et ceux qui développe en java, c'est en gros l'équivalent de Maven (dans le principe).

Si vous souhaitez en savoir plus sur Composer, vous pouvez aller voir la doc officielle.

Ici nous allons voir comment customiser notre install Drupal en me basant sur le dépot drupal-composer

Customisation de Composer

  • Récupération du projet drupal-project

git clone https://github.com/drupal-composer/drupal-project.git

  • Suppression des fichiers inutiles

rm -rf .git .travis.yml

Dans mon cas, je voudrai pouvoir modifier le path du dossier "public de Drupal" pour que mon install ressembre à ceci :

.
├── composer.json
├── composer.lock
├── drush
│   ├── policy.drush.inc
│   └── README.md
├── htdocs
│   ├── core
│   ├── modules
│   ├── profiles
│   ├── sites
│   └── themes
├── LICENSE
├── phpunit.xml.dist
├── README.md
├── scripts
│   └── composer
└── vendor

Actuellement si j'installe mon Drupal 8 tout va s'installer dans le dossier web/

2017-10-31-143038.png

Pour changer ce dossier, nous allons faire un sed dans le fichier

sed -i "s;web/;htdocs/;g" composer.json

Lorsque vous installez un module ou theme Drupal, il va tout chercher dans le dépot https://packages.drupal.org/8 par defaut. SI on veux rajouter notre propre dépot, pour récupérer par ex: des modules "custom", ou bien des thèmes.

il suffit de lancer cette commande:

composer config repositories.depot vcs url du dépot (http(s) ou ssh)

ex:

composer config repositories.famillewallon-theme vcs ssh://git@gitlab.famillewallon.com:2222/ines/famillewallon-theme.git

Edition du .gitignore

Si on veux pouvoir créer notre dépot git, nous allons modifer notre fichier .gitignore en mettant ceci :

/drush/contrib/
/vendor/
/composer.lock
/htdocs/

# Ignore files generated by PhpStorm
/.idea/

Tout nos modules, seront téléchargé par la suite via composer et rien ne sera présent dans notre dépot

Ajout des modules dans notre composer.json

Si je veux pouvoir installer des modules qui vont me servir dans mon instance Drupal, je vais utiliser la commande composer require

Dans mon cas :

composer require drupal/adminimal_admin_toolbar drupal/ctools drupal/geshifilter drupal/metatag drupal/module_filter drupal/piwik drupal/spamicide drupal/token drupal/video_embed_field famillewallon/famillewallon drupal/centreon_status

La commande require va mettre à jours notre fichier composer.json et installer les modules qui nous avons demandé ainsi que les autres modules présent dans la section "require" de notre json.

Il ne reste plus qu'à créer notre dépot git et faire un push de notre dossier et on est bon.

Instancier notre Drupal en prod

On clone notre dépot qui sera à l'extérieur du DocumentRoot du serveur ex: dans /var/www/

git clone git clone ssh://git@gitlab.famillewallon.com:2222/ines/drupal-composer.git .

Et pour finir installons notre Drupal avec la commande composer install

 

Ressources :

GIT, COMPOSER ET DRUPAL

Installer Drupal 8 avec composer