Composer

Moeilijkheidsgraad

Composer blijkt nodig te zijn voor verschillende modules in Drupal 8. Je kunt niet zonder... Voor de huis- en tuingebruikers is dit eventjes schrikken.

Het is mijn bedoeling om in deze korte bespreking deze zure appel toch aanvaardbaar te maken. Ik laat dan ook alle complexe mogelijkheden vallen en beperk mij tot de essentie. Dus de zaken die niet anders kunnen gedaan worden dan met de composer. De Drushers en programmeurs gaan nu plat liggen van het lachen.. Ik weet het..

Wat doet composer? 

Het installeert onder andere, modules en hun afhankelijke modules. Tevens wordt er in de Vendor map, indien nodig, een map aangemaakt met  de nodige bestanden. Dit kan je niet met een FTP programma doen, blijkbaar. Het moet mogelijk zijn, om ook de third party libraries van bvb Views slideshow mee te installeren, maar op het ogenblik van dit schrijven is het makkelijker om dit met de gewone FTP te doen, dan composer te gebruiken.

Eerst moet je SSH toegang tot de server instellen en een programma zoals Putty installeren (zie aparte bespreking).

Drupal8_002025.png

Met dir zie je de mappen en bestanden, met cd ga je naar een map, met cd ../ ga je terug. Dit zijn Linux commando's...

Ga naar de juiste map (hier public_html). Typ deze composer code om weer te geven dat de gegevens van drupal.org moeten gehaald worden. Dit is belangrijk! Er zal ogenschijnlijk niet gebeuren.

Kopieer dit (ga voor de meest recente versie naar https://getcomposer.org/download) en plak dit door met de rechtermuisknop te klikken in Putty. Control + V helpt niet!

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Vanaf nu kan je werken met php composer.phar.  als commando. Je kunt dit wijzigen dat je enkel composer kunt gebruiken:

mv composer.phar /usr/local/bin/composer 

De rechten kunnen wel een probleem vormen. Ik hou het simpel...gebruik telkens php composer.phar ipv composer

bijvoorbeeld: php composer.phar config repositories.drupal composer https://packages.drupal.org/8

Laat ons nu eens een module installeren... admin toolbar bvb. composer require drupal/admin_toolbar     en doe enter. (of php composer.phar enz..) Klaar. De module moet nu nog actief gezet worden. Composer doet dit niet.

Drupal8_002034.png

De kracht van Composer komt pas tot uiting als je modules installeert die zelf nog van andere modules én andere bestanden, afhankelijk zijn. Swiftmailer is er zo één: composer require drupal/swiftmailer . Composer installeert 4 zaken in plaats van 1!. Manueel activeren en het werkt. Swiftmailer is een HTML mail systeem. Het is onmogelijk om dit zonder composer te installeren.

Drupal8_002029.png

Wel nog aanvinken. Drushers gaan dit met drush doen natuurlijk.

Drupal8_002031.png
Laat ons nog een voorbeeld nemen. De address module is enkel met composer te installeren. Het is wel een knap ding. Al naar gelang het land gaat het velden voorzien. Er zijn zo'n 200 landen voorgeprogrammeerd.

composer require drupal/address

Weer zie je dat er een aantal afhankelijke bestanden mee worden geïnstalleerd.


Drupal8_002033.png

Laat ons nu eens kijken wat er gebeurd is.. Er is een bestand composer.json waar alles te zien is. De modules zijn er toegevoegd. Dit  zal bvb later nodig zijn om updates uit te voeren.

 

Drupal8_002035.png

In de mappen structuur zie je soms wijzigingen in de Vendor map, soms niet. Swiftmailer bvb heeft bestanden in de Vendor map, Address vind je er niet. Daar zit alles in de map van de modules zelf.

Drupal8_002036.png


Drupal8_002037.png

Ten slotte... Als je bvb colorbox installeert met Composer dan wordt de third party niet in de libraries map toegevoegd. Op de fora staat er hoe je dit met composer moet doen. Je moet eerst in de composer.json een speciale code plakken en daarna een install doen. Ik begrijp dit wel, maar voorlopig lijkt me een FTP programma toch makkelijker...

Conclusie: Composer zal zeker een krachtige bijdrage worden tot het succes van Drupal 8. Je zult niet moeten afvragen welke modules er afhankelijk zijn van anderen en uiteindelijk zullen alle third parties mee geïnstalleerd worden. Voorlopig zit het echter nog in de handen van de programmeurs. Zij hebben vele gaven maar iets simpel uitleggen is er geen van.