January 13, 2016
На заре разработки magento
модулей в нашей команде в тот момент когда мы начали использовать composer
для установки magento
модулей в
проекты, появилась задача хранить код модуля при разработке отдельно от ядра magento
. Дело в том что magento 1.x
обладает довольно сложной структурой и заставляет мешать ваши собственные файлы расширений с тысячами файлов и директорий ядра magento. Некоторое время использовали для решения этой задачи - composer
, хотя он нужен несколько для других вещей.
Хотелось бы в автоматическом режиме генерировать скелетон модуля с композер конфигом.
Как мы делали до того как узнали про modman
. Была идея установки модуля и симлинков через композер - это долго и в последствии отказались от этого, composer update
происходит слишком долго. Нужен инструмент упрощающий работу с симлинками. Так был найден modman. Modman
позволяет сохранять файлы ваших magento-модулей отдельно от тысяч файлов ядра magento. При этом можно держать файлы модуля в отдельном репозитории системы контроля версий, это сопутствующая фича.
modman init
, создается служебная директорий в которую в последствии будут устанавливаться модули .modman
(по аналогии с composer - там vendor
)System > Configuration > Advanced > Developer
modman link path/to/module
(есть ещё modman clone url
- указывается путь до репозитория)modman link
или modman clone
модуль должен содержать файл маппинга. Маппинг указывается для каждого файла модуля - по принципу source
-> destination
.Один из плюсов - полная интеграция modman
и composer
. Композер умеет читать маппинг модман-файла, то есть маппинг находится в одном файле и можно использовать две технологии одновременно.
Теперь самое интересное - как же автоматизировать все рутинные операции? Тут нам помогут n98-magerun и generate-modman.
Как n98magerun
и generate-modman
можно использовать применительно к modman? В n98magerun
есть генератор модуля, но тут необходимо добавить магические ключи:
n98-magerun dev:module:create --add-all --modman --add-composer --author-name="Autor Name" --author-email="@gmail.com" CustomNamespace CustomModule local
Командой будет создан скелетон модуля CustomModule
с стандартной структурой magento-модуля, предподготовленным файлом конфигурации composer.json, c неймспейсом CustomNamespace
в local code pull
и соответствующим файлом маппинга modman. Ключи --author-name
и --author-email
добавят параметры в composer.json
Структура каталогов получилась не совсем стандартной из-за директории src
. Давайте её уберем: переносим содержимое src
в текущюю папку, удаляем src
и вызываем генератор автоматического маппинга generate-modman
. В итоге должна получиться структура:
Допустим в процессе работы понадобилось замапить ещё одну директорию - не забываем перегенирить modman
файл маппинга и починить все симлинки modman repair
. Из документации:
repair - rebuild all modman-created symlinks (no updates performed)
Можно набрать в консоли команду modman
- выдаст документацию, в которой можно быстро найти нужный ключ.
C наступающий Старым Новым Годом! :)
Dmitry Schegolihin writes about his front-end experience for platforms Magento2, Vue Storefront and performance optimizations. I help businesses earn more by developing and optimizing web apps.