Wählen Sie basierend auf der Magento-Version aus, welche Datei über Composer installiert werden soll

11

Es wäre sehr praktisch, mehrere Codeversionen in ein Composer-Modul aufzunehmen und den Composer anhand der Magento-Version des Installationsziels ermitteln zu lassen, welche Version bereitgestellt werden soll.

Verwenden Sie für Magento> 1.7 beispielsweise die Datei system.xml, die tooltipverschachtelte groupund andere moderne Funktionen enthält. Verwenden Sie für ältere Versionen von Magento jedoch eine abgespeckte Version der Datei, die diese (fehlerhaften) Deklarationen nicht enthält.

Dieser Ansatz könnte auch für zahlreiche andere Dateien in einer Standardmodulstruktur funktionieren.

Die Optionen für Komponist Einsatz sind map, modmanoder package.xmlAFAIK, von denen keines jede Intelligenz in Bezug auf das Zielsystem haben. Es package.xmlist sehr unwahrscheinlich, dass sich die Option ändert, aber sie mapkönnte ...

Es scheint mir, dass es viele Erweiterungsentwickler geben würde, die von dem anmutigen Degradationsansatz profitieren würden. Hat jemand eine Lösung dafür gefunden?

Jonathan Day
quelle

Antworten:

8

Ich habe keine Problemumgehung und es war noch kein Problem für mich, aber ich habe einen Vorschlag, der funktionieren könnte:

  1. Sie müssen separate Versionszweige verwalten, um auf verschiedene Magento-Versionen abzielen zu können. Das Bereitstellen verschiedener Dateien in derselben Version, abhängig von der Magie eines Komponisten, wird nicht gut funktionieren. Ihre Erweiterung könnte also einen 1.xZweig für die Kompatibilität mit älteren Magento-Versionen (z. B. bis zu 1.6) und einen 2.xZweig für modernere Versionen haben. Fügen Sie Versions-Tags entsprechend hinzu. Natürlich können Sie so viele Zweige verwalten, wie Sie möchten, und den besten Code für jede Magento-Version schreiben, aber meiner Meinung nach ist dies die Mühe nicht wert und ein "moderner" und ein "älterer" Zweig sollten ausreichen. Es liegt an Ihnen, wie weit Sie mit dem "modernen" Zweig abwärtskompatibel sein möchten, es kann sogar nur die neueste Nebenversion sein.
  2. Fügen Sie eine Anforderung für Magento wie folgt hinzu:

    "require": {
        "magento/magento-ce": "1.4-1.7"
    }

    und

    "require": {
        "magento/magento-ce": ">=1.8"
    }
  3. Jetzt kommt der Nachteil, der Teil, auf den Sie keinen vollen Einfluss mehr haben: Es gibt kein offizielles magento/magento-cePaket, daher werden die Benutzer Ihrer Erweiterung Magento wahrscheinlich von einem von der Community verwalteten Spiegel wie https://github.com/firegento/magento installieren -ce oder aus ihrem eigenen Repository. Diese müssen das "virtuelle" Paket derselben Version ersetzenmagento/magento-ce (es gibt einen Platzhalter self.version , damit Sie die composer.json nicht für jedes Versionsupdate anpassen müssen):

    "replace": {
        "magento/magento-ce": "self.version"
    }

Dies funktioniert nur dann gut, wenn die oben genannte Konvention allgemein akzeptiert wird und nur für Benutzer, die Magento selbst über die Composer-Abhängigkeit installieren, was wahrscheinlich nicht die Mehrheit ist.

Ein realistischerer Ansatz besteht darin, einfach Schritt 1 zu befolgen und Ihren Benutzern zu empfehlen, eine andere Zweig- / andere Hauptversion zu benötigen, wenn sie eine Magento-Version ausführen, die älter als 1.x ist.

Fabian Schmengler
quelle