Kiedy rozpoczynam nowy projekt M2, pierwszą rzeczą, którą chciałbym zrobić, to zainstalować rdzeń za pomocą kompozytora:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
Mogę teraz napisać moje niestandardowe moduły i motywy pod app/code
. Następnie dodam mój composer.*
i cały app/code
folder do mojego VCS. Jak dotąd wszystko jest w porządku.
Załóżmy, że teraz chcę użyć narzędzi do kompilacji dla mojego projektu, powiedzmy Grunt lub Gulp.
Jeśli popełnię własne
Gruntfile.js
, zostanie to nadpisane przezmagento/magento2-base
pakiet, gdy uruchomięcomposer install
po sklonowaniu repozytorium.Jeśli popełniam moje
gulpfile.js
, nie mogę tak naprawdę zdefiniować moich zależności wpackage.json
, ponieważ byłoby to również zastąpione przezmagento/magento2-base
.Jeśli zdecyduję się użyć konfiguracji Grunt Magento i chcę ją dostosować, edytując pliki w
/dev/tools/grunt
(np.themes.js
), Nie mogę, ponieważ moje zmiany zostałyby zastąpione przezmagento/magento2-base
.
Rozumiem, że tak naprawdę niewiele można zrobić w katalogu głównym dokumentu. Istnieje oczywiście wiele rozwiązań tego problemu:
- Mogłem uruchomić
git checkout -
zaraz po instalacji, aby zresetować własne pliki - Mogę przechowywać swoje pliki kompilacji w specjalnym folderze,
/build
na przykład - Mógłbym użyć innego narzędzia do budowania, takiego jak Phing, Ant lub Rake (moi twórcy frontendu nie byliby jednak tacy szczęśliwi)
- Mógłbym zastąpić
magento/magento2-base
niestandardowym pakietem, który ma niestandardowe mapowanie plików podstawowych (niezbyt optymalne, ale hej, jest to opcja)
Osobiście nie lubię tych wszystkich opcji, więc chciałbym wiedzieć, czy istnieje preferowany lub lepszy sposób na osiągnięcie tego, co próbuję zrobić.
Czy ktoś ma ten sam problem? Jak to rozwiązałeś? Jak tworzysz swój projekt w ramach VCS?
AKTUALIZACJA
Dodatkowy punkt związany z konfiguracją projektu. W moich eksperymentach zauważyłem, że instalator kompozytora Magento ma flagę do przesłonięcia pliku:
"extra": {
"magento-force": "override"
}
Jest to wewnętrznie traktowane jako logiczne, jeśli się nie mylę, więc próbowałem ustawić go tak, false
aby pomijał przesłonięcie. Po uruchomieniu composer install
instalacja kończy się niepowodzeniem, ponieważ pliki są już obecne. Zasadniczo, jeśli nie pozwolę Magento zastąpić moich plików, nie będę mógł ich zainstalować.
Jaki jest zatem cel tej flagi? Czy ma to na celu jedynie sprawdzenie mnie? Szczerze mówiąc, nie ma dla mnie sensu, ale może ktoś może rzucić nieco światła na ten temat.
Gruntfile.js
, gulpfile.js
i package.json
problem został rozwiązany. Emisja skierowana na to pytanie jest nadal stosowane do nowszych Magento 2 wersjach, kiedy trzeba zmienić themes.js
, index.php
lub .htaccess
na przykład.