Обновить
Похоже, что некоторые вещи изменились с некоторыми последними изменениями (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
каталоге.
{
"name": "vendorname/module-name",
"type": "magento2-module",
"require": {
"magento/magento-composer-installer": "*"
},
"extra": {
"map": [
[
"module",
"VendorName/ModuleName"
]
]
}
}
В этом примере composer.json имя пакета composer vendorname/module-name
приведет к тому, что в него будут помещены файлы для пакета composer vendor/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
.