Hallo liebe Gemeinde,
wir können nun ja, wie auch schon in Shopware5, über eine composer.json Dependencies definieren und so via composer install die vendor libraries ins Plugin Verzeichnis herunterladen und einbinden. Ist jetzt mit Shopware6 alles ein bisschen komfortabler, aber wenn ich das richtig sehe muss man nach wie vor, vor der Installation des Plugins das composer install selbst ausführen. Dies setzt natürlich CLI Kenntnisse vorraus.
Daher die Frage, wird es, speziell im Gedanken an Community Plugins, möglich sein, dass die Dependencies in der composer.json automatisch bei der Plugin Installation geladen werden? So das auch ein “einfacher” Kunde in der Lage ist dieses Plugin zu installieren, und wir in der Lage sind sich ständig wiederholenden Code in einer vendor Library zu vereinen, ohne den Umweg über ein Foundation Plugin oder ähnliches gehen zu müssen, was meiner Erfahrung nach auch immer wieder zu Komplikationen geführt hat.
Ich meine mich zu errinern, dass es da einen PR gab und das @Shyim gesagt hat, dass du den vendor Ordner mit ausliefern musst, da es sonst zu Konflikten kommen kann mit anderen composer Abhängigkeiten. Ich bin mir jetzt aber nicht zu 100% sicher.
Das mit den Konflikten stimmt, das Problem besteht aber auch wenn man die Abhängigkeiten mitausliefert und ein anderes Plugin dies auch tut aber in einer anderen Version.
@Shopwareianer schrieb:
Ich meine mich zu errinern, dass es da einen PR gab und das @Shyim gesagt hat, dass du den vendor Ordner mit ausliefern musst, da es sonst zu Konflikten kommen kann mit anderen composer Abhängigkeiten. Ich bin mir jetzt aber nicht zu 100% sicher.
Falls jemand das gleiche Problem hat, dies ist noch immer der Fall.
Gibt es hier mittlerweile eine bessere Lösung?
Edit: Ich entwickle aktuell mein erstes Plugin und habe es noch in der shopware/development Umgebung. Aktuell muss ich die Dependencies immer auf Hauptebene anstatt in meinem Plugin-Ordner installieren. Ich vermute, dass es in der Produktiv-Umgebung das selbe Problem gibt. Muss man hier noch irgendwie composer autoload konfigurieren, damit der vendor-Ordner des Plugins verwendet wird?
Danke. Ich weiß nicht wieso, aber plötzlich funktioniert es auch komplett ohne zusätliches autoload. Mal schauen ob da noch irgendwas gecached ist oder es bald wieder auftritt.
Habe gestern nochmal Namespaces und Pfade refactored, vielleicht war das die Lösung.
Edit: Es läuft auch jetzt noch ohne zusätzliche autoloads, trotz eines „Komplett-Resets“ im Sinne von
rm -rf vendor custom/plugins/MyPlugin/vendor var/cache
composer install
cd custom/plugins/MyPlugin/vendor
composer install
cd ../../..
./psh.phar docker:start
./psh.phar docker:ssh
# im Container
./psh.phar install
bin/console plugin:install --activate --clearCache MyPlugin
Edit2: Ich kann die dependencies jetzt zwar innerhalb meines Plugins haben, das Ursprungs-Thema ist aber nicht gelöst. Die Dependencies werden bei der Installation der Plugins nicht automatisch installiert, es ist ein manuelles composer install im Plugin-Verzeichnis notwendig, außer man liefert den vendor-Ordner mit aus.