OXID6 Module #1: Composer mit und ohne Packagist

 25. April 2018

Ab OXID eShop in Version 6 wird Composer zur Installation vollwertiger OXID6-Module vorausgesetzt.
Da davon auszugehen ist, dass Composer bereits erfolgreich verwendet wird (für die Shopinstallation an sich), wird die Installation von Modulen vereinfacht, insb. wenn diese bei GitHub öffentlich verfügbar sind.
Aber auch Module aus privaten Repositories können mit minimalen Mehraufwand komplett via Composer installiert werden.

In dieser Artikelserie werden in 3 Teilen folgende Installations-Möglichkeiten mit Composer gezeigt, die sich insb. auch für private OXID6-Module eignen:

Inhaltsübersicht:

  • Teil #1: Module mit und ohne Packagist via Composer installieren
  • Teil #2: Module aus einen Zip-Archiv via Composer installieren
  • Teil #3: Satis – das eigene Composer Repository

Früher musste ein Modul zB. bei GitHub heruntergeladen, dann entpackt und in den korrekten Shopordner hochgeladen werden.
Heute übernimmt all das Composer mit nur einen Befehl, nämlich

composer require hersteller/modulname   

Hier finden Sie einige nützliche Gratismodule für OXID6, die auf diese Weise fix und fertig installierbar sind.

Woher weiß Composer, wo die Module liegen?

Option A: Packagist.org

Nachdem composer require... eingegeben wurde, wird Composer aktiv und sucht zunächst an verschiedenen Orten, nach dem gewünschten Modul (Paket).
Eine Anlaufstelle kennt Composer standardmäßig, nämlich Packagist.org. Hierbei handelt es sich um das Composer-eigene Paketverzeichnis im Web.
Jeder kann bei Packagist.org seine eigenen Pakete hinzufügen, es muss lediglich die (zB. GitHub-) URL des Repositories online eingetragen werden, schon kennt Composer das eigene OXID eShop Modul.
Es gibt allerdings die Einschränkung, dass Packagist.org nur öffentliche Repositories akzeptiert, für private Repositories steht Packagist.com kostenpflichtig zur Verfügung.

Option B: Angabe der Repository-URL in der composer.json

Für Packagist.org ist keine Eintragung in der OXID-composer.json erforderlich, Composer kennt Packagist.org standardmäßig.
Das Community-Projekt hdi-Report ist jedoch nicht bei Packagist.org gelistet.
Daher muss Composer noch darüber informiert werden, wo gesucht werden soll bzw. wo das Paket zu finden ist.
Mit dem Befehl

composer config repositories.OxidCommunity/hdiReport git https://github.com/Josef-A-Puckl/HDI-Report/ 

erfolgt der folgende Eintrag in der Datei composer.json in der Repositories-Section:

"repositories": {
    "OxidCommunity/hdiReport": {
    "type": "git",
    "url": "https://github.com/Josef-A-Puckl/HDI-Report/"
    }
}

Nun wird Composer neben Packagist.org auch unter „https://github.com/Josef-A-Puckl/HDI-Report/“ nach Paketen suchen.
Das Modul hdi-Report kann daher komfortabel installiert werden mit

composer require oxid-community/hdiReport  

Private Repositories

Nicht jedes Modul kann bzw. soll öffentlich zugänglich sein, insb. Kaufmodule bleiben besser „privat“.
Während Packagist.org ausschließlich öffentlich zugängliche Repositories zulässt, können mit der unter „Option B“ beschriebenen Methode auch Packages aus privaten Repositories installiert werden.

Ein bei Bitbucket abgelegtes, privates Repository kann genauso der OXID-composer.json hinzugefügt werden, wie ein Öffentliches:

composer config repositories.hersteller/modulname git https://benutzer@bitbucket.org/benutzer/modulname.git 

So können auch private Module elegant mit composer require... installiert werden.
Zunächst werden in der Konsole Benutzername und Passwort abgefragt, nach erfolgreicher Legitimation startet die Installation.

Mit dieser Vorgehensweise können auch Module, die nicht bei Packagist.org gelistet sind, schnell und unkompliziert via Composer installiert werden.
Die Installation erfolgt ausschließlich über die Konsole, Dateien müssen nicht händisch angepasst werden.

Alle Artikel der Serie „OXID6 Module“