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/
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