Мой проект основан на ZF и библиотеке JS. Я хотел иметь возможность развернуть библиотеку ZF в обычном месте (vendor/zendframework/zendframework1), а затем развернуть мою библиотеку JS в другом месте (public/my-vendor/my-library). Есть какой-либо способ сделать это?
Как получить несколько каталогов поставщиков с композитором?
Ответы (3)
Composer предназначен для управления вашими зависимостями PHP, а не JS.
Кроме того, он поддерживает только одну папку поставщика.
Вы можете следовать тому, как используются пакеты Symfony:
- установить все в вендоре
- связать (или скопировать) общедоступные ресурсы в общедоступный каталог в рамках процесса развертывания.
На мой взгляд, это безопаснее, чем устанавливать что-либо в общедоступную папку (при условии, что вы копируете/связываете только общедоступную часть библиотеки).
Я столкнулся с идеей символической ссылки, но я хотел автоматизировать ее, а не создавать символические ссылки вручную. Я собирался создать скрипт композитора для создания символической ссылки. Затем я обнаружил, что символические ссылки в Windows и * nix нужно создавать по-разному, что сделало это решение более запутанным с каждой секундой. Я обнаружил, что в документах композитора они говорят об этом же типе проблемы на странице пользовательских установщиков и говорят, что для ее решения необходимо создать собственный пользовательский установщик.
- Раздел соответствующей документации: http://getcomposer.org/doc/articles/custom-installers.md
- Мой пользовательский установщик: https://github.com/ddelrio1986/zf1-public-asset-installer
Я реализовал этот плагин для композитора для установки пакетов в пользовательские (настраиваемые) папки, которые вы можете просто включить в свой composer.json, следуйте примеру и сообщите мне, если у вас есть дополнительные вопросы :)
https://github.com/mnsami/composer-custom-directory-installer
композитор-пользовательский-каталог-установщик
Плагин композитора для установки разных типов пакетов композитора в настраиваемые каталоги за пределами пути установки композитора по умолчанию, который находится в папке vendor
.
Это не еще одна библиотека composer-installer
для поддержки типов пакетов, отличных от компоновщика, т. е. application
.. и т. д. Это только для добавления гибкости установки пакетов композитора вне папки поставщика. Этот пакет поддерживает только composer
типов пакетов,
https://getcomposer.org/doc/04-schema.md#type
Тип пакета. По умолчанию это библиотека.
Типы пакетов используются для пользовательской логики установки. Если у вас есть пакет, которому нужна особая логика, вы можете определить собственный тип. Это может быть пакет symfony, плагин для wordpress или модуль typo3. Все эти типы будут специфичны для определенных проектов, и им потребуется предоставить установщик, способный устанавливать пакеты этого типа.
Как использовать
- Включите плагин композитора в свой раздел
composer.json
require
::
"require":{
"php": ">=5.3",
"mnsami/composer-custom-directory-installer": "1.1.*",
"monolog/monolog": "*"
}
- В разделе
extra
укажите пользовательский каталог, в который вы хотите установить пакет:
"extra":{
"installer-paths":{
"./monolog/": ["monolog/monolog"]
}
добавляя часть installer-paths
, вы говорите композитору установить пакет monolog
в папку monolog
в корневом каталоге.
- В качестве дополнительной новой функции мы добавили больше гибкости в определении каталога загрузки, аналогичного
composer/installers
, другими словами, вы можете использовать такие переменные, как{$vendor}
и{$name}
, в разделеinstaller-path
:
"extra": {
"installer-paths": {
"./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"]
}
}
вышеизложенное позволит установить пакет doctrine/orm
в корневую папку вашего проекта под customlibs
.
Примечание
Composer type: project
не поддерживается в этом установщике, так как пакеты с типом project
имеют смысл использовать только с оболочками приложений, такими как symfony/framework-standard-edition
, которые потребуются другим пакетом.