Я видел несколько вещей, плавающих по непостоянному Интернету (например, Twitter), что некоторые недавние изменения в Magento 2 позволяют установить модуль в каталог поставщика через composer, и Magento 2 увидит ваш модуль без каких-либо ссылок на ссылки. ,
Если это правда, существует ли «минимальный composer.json
» файл, который разработчики модулей могут использовать со своими модулями, чтобы позволить пользователям Magento 2 устанавливать их в свои системы?
Ответы:
Обновить
Похоже, что некоторые вещи изменились с некоторыми последними изменениями (7 октября) в ветке разработки. Похоже, теперь можно поддерживать модуль, находящийся в каталоге vendor.
Я создал два примера установки модулей. Один, который копирует файлы в app / code, и другой, который регистрирует модуль, в котором он находится, в каталоге vendor.
Стратегия копирования: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Стратегия регистрации: https://github.com/mttjohnson/magento2-sample-module-minimal-register
Для целей разработки я думаю, что использование стратегии регистрации более полезно, поскольку файлы, которые запускает Magento, могут быть непосредственно изменены, протестированы и затем переданы обратно в репозиторий модулей.
Оригинальный ответ
Если у вас есть
composer.json
файл для вашего модуля composer package, который содержит тип,magento2-module
то по умолчанию файлы будут скопированы в указанный сопоставленный каталог вapp/code
каталоге.В этом примере composer.json имя пакета composer
vendorname/module-name
приведет к тому, что в него будут помещены файлы для пакета composervendor/vendorname/module-name
.Специальный тип
magento2-module
реализован как компоновщик-плагин в пакете magento / magento-composer-installer . Вот почему я перечислил это в разделе «Требуется». Именно этот плагин composer выполняет копирование файлов в соответствующийapp/code
каталог magento .На этот
extra: {map: [["composerDir","MagentoDir"]]}
раздел ссылается установщик composer-plugin, чтобы узнать, какую часть вашего пакета composer нужно сопоставить с частью структуры вашего каталога magento. В приведенном примере это займетvendor/vendorname/module-name/module
и скопирует файлы оттуда вapp/code/VendorName/ModuleName
.источник
Похоже, что-то вроде этого должно сделать свое дело.
Ключевым моментом здесь является раздел автозагрузчика. Он устанавливает автозагрузчик PSR-4, который указывает на ваши файлы классов, и автоматически загружает ваши
registration.php
. Когда composer отбрасывает файлы у поставщика и заново генерирует файлы автозагрузки, Magento должен видеть ваш модуль.Один из приятных побочных эффектов - код больше не нужен
app/code
!источник