Ich habe ein paar Dinge im unbeständigen Internet gesehen (z. B. Twitter), dass einige kürzlich vorgenommene Änderungen an Magento 2 es ermöglichen, ein Modul über Composer im Herstellerverzeichnis zu installieren, und Magento 2 wird Ihr Modul ohne Symlink-Tomfoolery sehen .
Wenn dies zutrifft, gibt es eine "minimale composer.json
" Datei, die Modulentwickler mit ihren Modulen verwenden können, damit Magento 2-Benutzer sie auf ihren Systemen installieren können?
Antworten:
Aktualisieren
Es sieht so aus, als hätten sich einige Dinge mit einigen letzten Änderungen (7. Oktober) in der Entwicklungsbranche geändert. Es scheint nun möglich zu sein, ein Modul zu unterstützen, das sich im Herstellerverzeichnis befindet.
Ich habe zwei Beispiele für die Installation von Modulen erstellt. Eine, die Dateien in App / Code kopiert, und eine andere, die das Modul registriert, in dem es sich im Herstellerverzeichnis befindet.
Kopierstrategie: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Registrierungsstrategie: https://github.com/mttjohnson/magento2-sample-module-minimal-register
Für Entwicklungszwecke halte ich die Verwendung der Registrierungsstrategie für nützlicher, da die von Magento ausgeführten Dateien direkt geändert, getestet und dann wieder in das Modul-Repo übernommen werden können.
Ursprüngliche Antwort
Wenn Sie eine
composer.json
Datei für Ihr Modul-Composer-Paket haben, die einen Typ von enthält,magento2-module
werden standardmäßig Dateien in ein angegebenes zugeordnetes Verzeichnis imapp/code
Verzeichnis kopiert .In diesem Beispiel führt composer.json zum Namen
vendorname/module-name
des Composer-Pakets, in dem die Dateien für das Composer-Paket abgelegt werdenvendor/vendorname/module-name
.Der spezielle Typ von
magento2-module
ist als Composer-Plugin im Magento / Magento-Composer-Installer- Paket implementiert. Deshalb habe ich es im Abschnitt "Erforderlich" aufgeführt. Es ist dieses Composer-Plugin, das das Kopieren von Dateien in das entsprechende Magento-app/code
Verzeichnis übernimmt .Der
extra: {map: [["composerDir","MagentoDir"]]}
Composer-Plugin-Installer verweist auf diesen Abschnitt, um zu erfahren, welcher Teil Ihres Composer-Pakets welchem Teil Ihrer Magento-Verzeichnisstruktur zugeordnet werden soll. In dem bereitgestellten Beispiel würde diesvendor/vendorname/module-name/module
Dateien von dort nach kopierenapp/code/VendorName/ModuleName
.quelle
Es sieht so aus, als ob so etwas den Trick machen sollte.
Der Schlüssel hier ist der Autoloader-Bereich. Es wird ein PSR-4-Autoloader eingerichtet, der auf Ihre Klassendateien zeigt und Ihre automatisch lädt
registration.php
. Wenn Composer die Dateien im Hersteller ablegt und die Autoload-Dateien neu generiert, sollte Magento Ihr Modul sehen können.Ein netter Nebeneffekt davon - Code muss nicht mehr vorhanden sein
app/code
!quelle