Создал несколько модулей, для каждого есть git репозиторий. Модули хранятся в app/code/Vendor/. Так советуют сами разработчики в доке.
Проблемы возникают когда нужно развернуть проект. Придется клонировать каждый модуль что не удобно. Хотелось бы включить модули в зависимости composer.
Хорошо, включили. Теперь спокойно клонируем проект и делаем composer install. Модули скачаются в vendor. Для продакшна все ок, но как быть если нужно разрабатывать? Можно конечно это делать в vendor, но разработчики не одобрямс.
Как вы решили этот вопрос?
Хоть в документации много чего есть и она полезна для начала, но в деталях на неё полагаться не стоит. Там много устаревшего или не соответствующего действительности.
Никто вам не мешает разрабатывать там, где хотите. Главное понимать что вы делаете и не потерять изменения при обновлении модулей через composer.
Хотя возможно я не до конца понял смысл вашего вопроса.
@Anonymous wrote:А это не поможет https://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md ?
В мадженте в composer раньше было нечто такое:
"extra": { "map": [ [ "*", "Vendor/MyModule" ] ] }
Да, это копирует модуль дополнительно в app/code/Vendor/MyModule, но есть 1 но: копируется только сам модуль, без папки .git, следовательно, работать с ним нельзя.
@niro wrote:Хоть в документации много чего есть и она полезна для начала, но в деталях на неё полагаться не стоит. Там много устаревшего или не соответствующего действительности.
Никто вам не мешает разрабатывать там, где хотите. Главное понимать что вы делаете и не потерять изменения при обновлении модулей через composer.
Хотя возможно я не до конца понял смысл вашего вопроса.
Я тоже думаю что не все там правильно. Но часто вижу блоги где люди показывают что они делают. Так вот часто используется app/code.
Уже хочется ради интереса узнать почему так.
Для себя мы решили, что app/code это аналог local codePool из первой версии.
Если делаем модуль, которые будет использоваться больше, чем на одном проекте, то делаем в vendor с установкой через композер и т.п. А если это что-то мелкое и только для текущего проекта, то делаем в app/code.
@niro wrote:Для себя мы решили, что app/code это аналог local codePool из первой версии.
Если делаем модуль, которые будет использоваться больше, чем на одном проекте, то делаем в vendor с установкой через композер и т.п. А если это что-то мелкое и только для текущего проекта, то делаем в app/code.
Интересное решение, надо подумать.
Кстати, по какому принципу делаете модули?
Как я понял, нужно для каждой задачи делать свой модуль. Но мы не в идеальном мире и делать разные модули для формы в заказе, попапа в заказе, валидации оригинального поля - это все слишком сложно. Наверное, нужна некая середина между независимостью и связанностью. Есть идея 1 "сервисного" модуля для темы.
Совсем мелкие задачки объединяем в один модуль, но далеко не всё в один. Делайте так, как вам удобно.
А .gitignore ни где не может помешать?
Думаю app/code используется в силу привычки разработки на ZF2. Новая модульная архитектура ZF2 предполагает, что кастомные модули для приложения располагаются в папке module, а third-party модули располагаются вместе с основной библиотекой в vendor. Вот папка app/code и воспринимается как аналог module. Примерно так же в Symfony, только там есть папка src.