OXID6 Module #2: Zip-Archive mit Composer installieren

 26. April 2018

Die 3-teilige Artikelserie OXID6 Module zeigt unterschiedliche Optionen, die ab „v6“ zur Verfügung stehen, um Module bzw. Pakete allgemein (kann auch zB. ein Theme sein) komplett via Composer zu installieren.
Die gezeigten Installationsarten erfolgen allesamt über die Konsole, ohne händische Eingriffe in der OXID-composer.json oder in den Packages.

Inhaltsübersicht:

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

Composer kann Module direkt aus Zip-Archiven installieren.
Auf dem Server sollte hierfür die PHP Zip Extension installiert sein, i.d.R ist das bei den meisten Webspaces bereits der Fall.

Sie können einfach im OXID Projekt einen neuen Ordner für Ihre Zip-Archive (Module) anlegen, in welchen Sie die Zip-Dateien ablegen.
Die Dateien müssen vorher nicht extra entpackt und in die korrekten Ordner kopiert werden, all das erledigt Composer.

Zip Archiv hochladen

Das Zip-Archiv muss irgendwo abgelegt werden, damit Composer es zur Installation verwenden kann.
Es bietet sich zB. im OXID-Projekt direkt der vendor-Ordner an.
Darin können Sie der Übersichtlichkeit halber einen Ordner namens „zip“ erstellen und in diesen die Zip-Archive hochladen.

Sie können Ihr eigenes Modul verwenden, oder es zunächst mit einem öffentlichen GitHub-Modul versuchen, zB. ecs/demo, welches hier direkt bei GitHub als Zip heruntergeladen werden kann.
Das Zip kopieren Sie, wie es ist, ohne es zu entpacken, einfach in den neuen Ordner vendor/zip.

Zip-Ordner bekannt machen

Composer muss mitgeteilt werden, dass er ab sofort auch im zip-Ordner nachsehen muss, ob dort ein angefordertes Package verfügbar ist.
Mit folgendem Befehl wird der zip-Ordner in die OXID-composer.json eingetragen:

composer config repo.meinzip artifact ./vendor/zip  

Der neue Eintrag in der composer.json wird dann folgendermaßen aussehen:

"repositories": {
    "meinzip ": {
        "type": "artifact",
        "url": "./vendor/zip"
    }
}

Package bzw. Modul installieren

Die im Zip-Ordner verfügbaren Zip-Archive können nun wie gewohnt installiert werden, hier zB. das Demomodul:

composer require ecs/demo  

Zu beachten ist, dass Composer zwar standardmäßig lokale Packages bevorzugt, falls diese mit gleichen Namen auch bei Packagist gelistet wären, jedoch darf auch die Versionsnr. nicht niedriger sein als die des bei Packagist verfügbaren Paketes.
Voraussetzung für die hier beschriebene Installationsart ist eine Angabe der Modulversion in der Modul-composer.json, zB. "version": "1.0.0",.

Packagist kann übrigens, falls erforderlich, mit folgendem Befehl deaktiviert werden:

composer config repo.packagist false

„Kaufmodule“ aus Zip-Archiv installieren

Grundsätzlich sollte eine Modulinstallation so erfolgen, wie in der Readme – Datei beschrieben.
Bei kommerziellen eComStyle.de Modulen wird in der Readme zwar ein anderer Installationsvorgang beschrieben, jedoch können diese Module auch wie in diesem Artikel gezeigt, direkt als Zip-Archiv auf dem Server abgelegt und mit composer require... fertig installiert werden.

Vorteil dieser Methode ist, dass die Fehleranfälligkeit relativ gering ist.
Sicherlich funktioniert dieser Installationsweg auch mit kommerziellen OXID6-Modulen anderer Anbieter.

Alle Artikel der Serie „OXID6 Module“