我看到已经有一个问题,但它没有回答问题
- 如何将作曲家包安装到/src 目录中?
如何在/src
目录中安装捆绑包?
我想这样做的原因是为了开发和部署,所以
- 我不必将 Symfony 的基本代码签入我的 Subversion 存储库
- 我可以使用作曲家进行部署
查看作曲家文档时,我确实遇到了这个:
- http://getcomposer.org/doc/04-schema.md#config
目录:默认为供应商。您可以将依赖项安装到 如果需要,可以更改目录。
我可以在捆绑包级别设置它吗?还是用于整体安装?
- https://github.com/composer/composer/blob/master/res/composer-schema.json
我知道这已经晚了,但以防有人在寻找我煞费苦心(数小时)找到的答案:vendor-dir
文档说:
通过设置此变量,您可以使作曲家将依赖项安装到供应商以外的目录中
例:
{
"config": {
"vendor-dir": "website/password/vendor/"
}
}
从这个文档和这个文档
再次,希望能拯救其他人几个小时。
{
"extra": {
"installer-paths": {
"sites/example.com/modules/{$name}": ["vendor/package"]
}
}
}
阅读更多。
如果您发现 composer 的自定义安装程序过于复杂或僵化,并且您可以计划要部署到的系统类型,则可以考虑使用安装后脚本。
下面是一个示例,该示例创建从供应商下安装的包到可能预期的位置的符号链接:
"scripts": {
"post-install-cmd": [
"test -d vendor/foo/bar && ln -s ../vendor/foo/bar lib/bar"
]
}
这将在指向vendor/foo/bar/
的lib/bar/
处创建一个符号链接。
我已经实现了这个作曲家插件来将软件包安装到用户(自定义)定义的文件夹中,您可以将其包含在您的 composer.json 中,按照示例告诉我您是否有更多问题:)
https://github.com/mnsami/composer-custom-directory-installer
作曲家-自定义目录-安装程序
一个作曲家插件,用于在vendor
文件夹中的默认作曲家默认安装路径之外的自定义目录中安装不同类型的作曲家包。
这不是另一个支持非作曲家包类型的composer-installer
库,即application
..等。这只是为了增加在供应商文件夹之外安装作曲家包的灵活性。此包仅支持composer
包类型,
https://getcomposer.org/doc/04-schema.md#type
包的类型。它默认为库。
包类型用于自定义安装逻辑。如果包需要一些特殊逻辑,则可以定义自定义类型。这可以是一个symfony-bundle,一个wordpress插件或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
部分,您告诉 Composer 将monolog
包安装在根目录的monolog
文件夹中。
- 作为一项附加的新功能,我们在定义下载目录方面增加了更大的灵活性,就像
composer/installers
一样,换句话说,您可以在installer-path
部分中使用{$vendor}
和{$name}
等变量:
"extra": {
"installer-paths": {
"./customlibs/{$vendor}/db/{$name}": ["doctrine/orm"]
}
}
上面的内容将设法将doctrine/orm
包安装在项目的根文件夹中,在customlibs
下。
注意
此安装程序不支持作曲家type: project
,因为类型为project
的包只对与应用程序外壳(如symfony/framework-standard-edition
)一起使用时才有意义,这是另一个包需要的。