Стандартный формат имени пакета для пакета композитора vendor/pkName
,
У меня есть следующая структура каталогов:
- myVendorName
- extensions
- yii2
-Ext1
-Ext2 and so on
- bundles
- bundle1
- bundle2
- bundle3 and so on
- toolkit
- forlder1
- folder2 and so on
Это организация, которую я дал на своем жестком диске, но реальные проекты похожи на:
- myVendorName/extensions/yii2/ext1
- myVendorName/extensions/yii2/ext2
- myVendorName/bundles/bundle1
- myVendorName/bundles/bundle2
- myVendorName/bundles/bundle3
- myVendorName/toolkit
Мои вопросы по этому поводу:
Можно хранить все в одном git-репозитории и требовать от композитора только необходимые подпакеты (например: требуют только myVendorName/toolkit
а также myVendorName/bundles/bundle3
)
С помощью composer можно поддерживать расширенный формат имени (поэтому в composer.json
требуют раздела, требуют для myVendorName/bundles/bundle3
вместо myVendorName/bundle3
)
Есть ли способ достичь этих 2 баллов?
Вы можете достичь (1), используя git subtree split. Используя этот метод, вы разделяете отдельные каталоги основного хранилища на новый и помещаете его в github. Таким образом, все пакеты по-прежнему имеют свой собственный репозиторий, но вам нужно поддерживать только один репозиторий (многие крупные проекты используют его, например Symfony, Laravel и т. Д.).
(2) не поддерживается. Вы можете использовать что-то вроде my_vendor/third-bundle
вместо my_vendor/bundles/third
, Каталог в любом случае не важен, так как Composer просто автоматически загрузит все классы внутри пакетов (если они имеют правильную конфигурацию автозагрузки).
Можно хранить все в одном git-репозитории и требовать с
составить только необходимые подпакеты (например: требуется только
«myVendorName / toolkit» и «myVendorName / bundles / bundle3»)
Да. Если в разных проектах используются одни и те же компоненты, для которых может потребоваться определенный набор зависимостей, рассмотрите возможность сделать их повторно используемым пакетом вместо пустого пакета с composer.json. Также обратите внимание, что require-dev
решается только в корневом пакете.
Можно поддерживать расширенный формат имени с помощью композитора (так
в composer.json требуется раздел, требуется для
«myVendorName / bundles / bundle3» вместо «myVendorName / bundle3»
Да. В repositories
, предоставлять vcs
или же package
хранилище и заставить его решить myVendorName/bundles/bundle3
, url
в vcs
может ссылаться на локальный репозиторий git. Нет простого способа присвоить псевдониму «myVendorName / bundle3» значение «myVendorName / bundles / bundle3», что делает эту идею непрактичной.