我的项目依赖于ZF和JS库。我希望能够将ZF库部署到正常位置(vendor / zendframework / zendframework1),然后将我的JS库部署到其他地方(public / my-vendor / my-library)。反正有吗?
答案 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,这是另一个程序包所必需的。