Использовать композитор для установки пакета в пользовательском каталоге
Я вижу, что есть уже вопрос, но он не ответил на вопрос
Как установить пакет в каталог /src
?
Причина, по которой я хотел бы сделать это, - это разработка и развертывание, поэтому
- Мне не нужно проверять базовый код Symphony в моем реестре subversion
- Я мог бы использовать Composer для развертывания
Оглядываясь на документы Composer, я еще встретил это:
vendor-dir. По умолчанию поставщик. Вы можете установить зависимости в если вы хотите.
Могу ли я установить это на уровне Bundle? или это для общей установки?
Ответы
Ответ 1
Я знаю, что это поздно, но на случай, если кто-то ищет ответ, который я нашел кропотливо (часы и часы): vendor-dir
В документации написано:
Устанавливая этот var, вы можете сделать компоновщик установкой зависимостей в каталог, отличный от поставщика
Пример:
{
"config": {
"vendor-dir": "website/password/vendor/"
}
}
Из этот документ и этот документ
Опять же, надеемся спасти кого-нибудь еще пару часов.
Ответ 2
{
"extra": {
"installer-paths": {
"sites/example.com/modules/{$name}": ["vendor/package"]
}
}
}
Подробнее.
Ответ 3
Я реализовал этот плагин для установки для установки пакетов в пользовательские (настраиваемые) папки, которые вы можете просто включить в свой композитор .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
, которые потребуются другому пакету.
Ответ 4
Если вы обнаружите, что пользовательские инсталляторы композитора слишком сложны или жестки, и вы можете планировать, какие типы систем вы будете развертывать, вы можете использовать сценарии после установки.
Вот пример, который создает символическую ссылку из пакета, установленного поставщиками, в место, где он может ожидаться:
"scripts": {
"post-install-cmd": [
"test -d vendor/foo/bar && ln -s ../vendor/foo/bar lib/bar"
]
}
Это создаст символическую ссылку в lib/bar/
, указывающую на vendor/foo/bar/
.