Получение развивающей копии модуля ZF2

У меня есть один основной модуль приложения и несколько зависимых модулей. Все модули имеют свои собственные репозитории на github и устанавливаются через composer (используя локальный репозиторий suc).
В процессе разработки мне нужно вносить изменения либо в основной модуль, либо в зависимые. Но зависимые модули находятся в каталоге / vendor, и вносить изменения и делать там git init — плохая идея.
Итак, мне нужна локальная копия каждого модуля в папке / devmodules и добавить эту папку в application.config:

'module_listener_options' => array(
// ...
'module_paths' => array(
'./module',
'./vendor',
'./devmodules'
),

Как сказать, что ZF не использует / vendor для таких модулей? Изменить автозагрузчик / использовать инструмент make или скрипт-скрипт в composer для создания новой копии и очистки / вендора?
Какова лучшая практика для решения проблемы?

Постскриптум Зависимые модули — это мои собственные модули, которые я разрабатываю параллельно с Application. Поэтому я хочу видеть изменения немедленно, а не после коммита / толчка / обновления.

0

Решение

У меня была эта проблема со «SpeckCommerce», где вы разместили этот вопрос как проблему. С SpeckCommerce нам пришлось удалить модуль из composer.json потому что автозагрузчик композитора отменял версию devmodules.

Способ сделать эту работу состоит в том, чтобы удалить модуль из composer.json, разработайте в папке devmodules, зафиксируйте ее, а затем повторно представьте загруженную композитором версию.

Это вызывает другие проблемы, однако с иждивенцами. Если вы удалите модуль, который является зависимостью для другого модуля, это вызовет проблемы с разрешением зависимостей при установке / обновлении composer.

Я думаю, что самый простой способ работы — это сказать композитору --prefer-source когда вы устанавливаете / обновляете, что дает вам хранилище с управлением версиями, в которое вы можете добавить удаленный сервер, переключиться на него и затем нажать на свой собственный хранилище, прежде чем создавать PR, объединять и т. д.

Трудно работать с библиотеками в vendor справочник, но из моего опыта, который оказался наиболее эффективным способом работы.

0

Другие решения

Для меня я получаю следующее решение:

1) Добавить что-то подобное в "script"-секция в composer.json:

"devmodules": [
"mkdir devmodules",
"git clone git://github.com/4orever/ppc-auth/           devmodules/ppc-auth",
"git clone git://github.com/4orever/ppc-backend/        devmodules/ppc-backend",
"git clone git://github.com/4orever/ppc-backend-client/ devmodules/ppc-backend-client",
"git clone git://github.com/4orever/ppc-dev-mode/       devmodules/ppc-dev-mode",
"git clone git://github.com/4orever/ppc-main-assets/    devmodules/ppc-main-assets",
"rm -rf vendor/4orever"]

2) И добавить "autoload-dev":

 "autoload-dev": {
"psr-4": {
"PpcMainAssets\\":  "devmodules/ppc-main-assets/",
"PpcBackend\\":     "devmodules/ppc-backend/src",
"PpcAuth\\":     "devmodules/ppc-auth/src"},
"classmap":[
"devmodules/ppc-backend/Module.php",
"devmodules/ppc-backend-client/Module.php",
"devmodules/ppc-auth/Module.php"]
}

3) Для производства просто используйте: composer install --no-dev, Я не проверял это, но я полагаю, что «autoload-dev» должен игнорироваться. Если не запустить composer dumpautoload --no-dev

4) Для разработки: composer install а также composer devmodules

Я не люблю использовать стандартные ./vendor папка, созданная композитором, потому что она не подключена к git по умолчанию. я предпочитаю git clone в папке мне нужно.

Я надеюсь, что это будет полезно.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector