У меня есть это определение:
{ "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/
. Как это указать?
Кажется, что вы можете определить, что vendor
dir будет чем-то другим ( plugins
в вашем случае):
{ "config": { "vendor-dir": "plugins" } }
Затем вы можете переименовать имя пакета, чтобы внутри не было уровня, например:
"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.*" } }
редактировать
Используя эту конфигурацию, вы получите путь (что, конечно, не хорошо для symfony):
плагинов / 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.*" } }
Вы также можете использовать компоновщик / инсталляторы , установщик библиотеки мультиформатных компоновщиков с типом пакета «symfony1-plugin». Вот как выглядит мой файл composer.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 установить зависимости в каталог, отличный от поставщика.
Может быть полезно в случае, если вы хотите переопределить это в конкретной среде, такой как бродяга, где вы не хотите, чтобы это было в общей папке.
И, как сказал J0k, в разделе config
от composer.json
есть каталог vendor-dir
По умолчанию поставщик. Вы можете установить зависимости в другой каталог, если хотите. $ HOME и ~ будут заменены на путь вашего домашнего каталога в каталоге vendor-dir и всех параметрах * -dir ниже.