Как указать путь установки Composer?
у меня есть такое определение:
{
"repositories": [
{
"type": "package",
"package": {
"name": "symfony/sfGuardPlugin",
"version": "4.0.2",
"dist": {
"url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
"type": "tar"
}
}
}
],
"require": {
"symfony/sfGuardPlugin": "4.0.*"
}
}
Я использую Symfony 1, и я хотел бы установить их на plugins/sfGuardPlugin/
. Как мне это уточнить?
3 ответа:
кажется, что вы можете определить
vendor
реж составляет что-то другое (plugins
в вашем случае):{ "config": { "vendor-dir": "plugins" } }
затем вы можете переименовать имя пакета, чтобы внутри него не было уровня dir, например:
"package": { "name": "sfGuardPlugin",
Итак, ваша
composer.json
должен выглядеть так:{ "config": { "vendor-dir": "plugins" }, "repositories": [ { "type": "package", "package": { "name": "sfGuardPlugin", "version": "4.0.2", "dist": { "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz", "type": "tar" } } } ], "require": { "sfGuardPlugin": "4.0.*" } }
Edit
используя эту конфигурацию, вы получите путь (т. е. конечно не подходит для symfony):
plugins / sfGuardPlugin/sfGuardPlugin-4.0.2/
я нашел обходной путь с этим
composer.json
:{ "config": { "vendor-dir": "plugins" }, "repositories": [ { "type": "package", "package": { "name": "sfGuardPlugin", "version": "4.0.2", "source": { "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/", "type": "svn", "reference": "branches/1.3/" } } } ], "require": { "sfGuardPlugin": "4.0.*" } }
вы также можете использовать композитор/монтажников, мульти-фреймворк composer library installer с типом пакета "symfony1-plugin". Это мой композитор.JSON-файл выглядит так, чтобы он мог устанавливать как Symfony 1.4 (в lib / vendor) , так и плагины (/plugins):
{ "config": { "vendor-dir": "lib/vendor" }, "repositories": { "symfony": { "type": "package", "package": { "name": "symfony/symfony1", "version": "1.4", "dist": { "url": "https://github.com/symfony/symfony1/zipball/1.4", "type": "zip" } } }, "sfResquePlugin" : { "type": "package", "package": { "name": "devpips/sfResquePlugin", "type": "symfony1-plugin", "version": "0.1", "dist": { "url": "https://github.com/devpips/sfResquePlugin/zipball/master", "type": "zip" } } } }, "require": { "composer/installers": "dev-master", "symfony/symfony1": "1.4", "devpips/sfResquePlugin":"0.1" } }
посмотреть
COMPOSER_VENDOR_DIR
переменные среды.установив этот var, вы можете заставить Composer установить зависимости в каталог, отличный от поставщика.
может быть полезно в случае, если вы хотите переопределить это в определенной среде, такой как vagrant, где вы не хотели бы, чтобы это было в общей папке.
и как сказал J0k, есть
vendor-dir
на наcomposer.json
по умолчанию для поставщика. Вы можете установить зависимости в другой каталог, если хотите. $HOME и ~ будут заменены путем вашего домашнего каталога в параметрах vendor-dir и all * - dir ниже.