如何指定Composer安装path?

我有这个定义:

{ "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目录是别的东西 ( 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.*" } } 

编辑

使用这个configuration,你将得到的path(这当然不是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.*" } } 

您还可以使用composer / installers ,一个多框架composer php库安装程序与“symfony1-plugin”包types。 这是我的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环境variables。

通过设置这个var,你可以让Composer把依赖关系安装到供应商以外的目录中。

如果您想在特定的环境(例如stream浪者)中覆盖此选项,可能会有所帮助,而您不希望此选项位于共享文件夹中。

正如J0k所说, composer.json config部分有vendor-dir

默认为供应商。 如果需要,可以将依赖项安装到不同的目录中。 $ HOME和〜将被replace为您的主目录在vendor-dir中的path以及下面的所有* -dir选项。