如何使用composer获取多个供应商目录?

时间:2012-08-12 21:16:23

标签: php javascript composer-php

我的项目依赖于ZF和JS库。我希望能够将ZF库部署到正常位置(vendor / zendframework / zendframework1),然后将我的JS库部署到其他地方(public / my-vendor / my-library)。反正有吗?

3 个答案:

答案 0 :(得分:6)

Composer旨在管理您的PHP依赖项,而不是JS。

此外,它仅支持一个供应商文件夹。

您可以按照Symfony捆绑使用的方式:

  • 在供应商中安装所有内容
  • 将公共资产链接(或复制)到公共目录,作为部署过程的一部分

在我看来,它比在公共文件夹中安装一些东西更安全(只要你复制/链接一个库的公共部分)。

答案 1 :(得分:4)

我遇到了符号链接的想法但我想自动化这个而不是手动创建符号链接。我打算创建一个作曲家脚本来创建符号链接。然后我发现Windows和* nix上的符号链接需要以不同的方式创建,这使得这个解决方案变得更加混乱。我发现在作曲家文档中,他们在自定义安装程序页面上讨论了同样类型的问题,并说要解决此问题以创建自己的自定义安装程序。

答案 2 :(得分:1)

我已经实现了这个作曲家插件,可以将软件包安装到用户(自定义)定义的文件夹中,您可以将它包含在您的composer.json中,按照示例告诉我您是否还有其他问题:)

https://github.com/mnsami/composer-custom-directory-installer

作曲家定制目录的安装程序

作曲家插件,用于在vendor文件夹中默认编写器默认安装路径之外的自定义目录中安装不同类型的编写器包。

这不是用于支持非作曲家包类型的另一个composer-installer库,即application ..等。这只是为了增加在vendor文件夹之外安装composer包的灵活性。此程序包仅支持composer程序包类型,

https://getcomposer.org/doc/04-schema.md#type

  

包裹的类型。它默认为库。

     

包类型用于自定义安装逻辑。如果您的软件包需要一些特殊逻辑,则可以定义自定义类型。这可能是symfony-bundle,wordpress-plugin或typo3-module。这些类型都将特定于某些项目,并且需要提供能够安装该类型包的安装程序。

如何使用

  • 将作曲家插件包含在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"] } } 等变量{1}}部分:
doctrine/orm

以上将设法在customlibs下的项目的根文件夹中安装type: project包。

注意

此安装程序不支持Composer project,因为类型symfony/framework-standard-edition的包仅适用于{{1}}之类的应用程序shell,这是另一个程序包所必需的。