Widziałem kilka rzeczy unoszących się w nietrwałym Internecie (np. Twitter), że niektóre ostatnie zmiany w Magento 2 umożliwiają instalację modułu w katalogu dostawcy za pośrednictwem kompozytora, a Magento 2 zobaczy twój moduł bez jakiejkolwiek wygłupiania symlinkowania .
Jeśli to prawda, czy jest jakiś „minimalny composer.json
” plik, który programiści modułów mogą używać ze swoimi modułami, aby użytkownicy Magento 2 mogli je zainstalować w swoich systemach?
Odpowiedzi:
Aktualizacja
Wygląda na to, że kilka rzeczy uległo zmianie wraz z niektórymi najnowszymi zmianami (7 października) w branży deweloperskiej. Teraz wygląda na to, że można obsługiwać moduł znajdujący się w katalogu dostawcy.
Stworzyłem dwa przykłady instalacji modułów. Jeden, który kopiuje pliki do aplikacji / kodu, a drugi rejestruje moduł, w którym znajduje się w katalogu dostawcy.
Strategia kopiowania: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Strategia rejestracji: https://github.com/mttjohnson/magento2-sample-module-minimal-register
Dla celów programistycznych myślę, że wykorzystanie strategii rejestracji jest bardziej przydatne, ponieważ pliki uruchamiane przez Magento mogą być bezpośrednio modyfikowane, testowane, a następnie przekazywane z powrotem do repozytorium modułów.
Oryginalna odpowiedź
Jeśli masz
composer.json
plik pakietu modułu kompozytora, który zawiera typ,magento2-module
wówczas domyślnie pliki zostaną skopiowane do określonego zamapowanego katalogu wapp/code
katalogu.W tym przykładzie composer.json nazwa pakietu kompozytora
vendorname/module-name
spowoduje umieszczenie plików pakietu kompozytoravendor/vendorname/module-name
.Specjalny typ
magento2-module
jest zaimplementowany jako wtyczka kompozytora w pakiecie magento / magento-composer-installer . Dlatego wymieniłem go w sekcji wymagania. To ta wtyczka kompozytora kopiuje pliki do odpowiedniegoapp/code
katalogu magento .Do tej
extra: {map: [["composerDir","MagentoDir"]]}
sekcji odwołuje się instalator wtyczki kompozytora, aby dowiedzieć się, która część pakietu kompozytora ma zostać odwzorowana na część struktury katalogu magento. W podanym przykładzie wziąłoby tovendor/vendorname/module-name/module
i skopiowało pliki stamtąd doapp/code/VendorName/ModuleName
.źródło
Wygląda na to, że coś takiego powinno wystarczyć.
Kluczem tutaj jest sekcja autoloadera. Konfiguruje autoloader PSR-4, który wskazuje na twoje pliki klas i automatycznie ładuje twoje
registration.php
. Kiedy kompozytor upuści pliki u dostawcy i ponownie wygeneruje pliki autoload, Magento powinien widzieć twój moduł.Jeden fajny efekt uboczny tego - kod już nie musi istnieć
app/code
!źródło