是否可以指定Composer中我们自己的包安装到不同于vendor/
的文件夹中。我知道我可以指定一个文件夹来安装所有软件包,但这不是我想要的。我希望第三方包最终在vendor/
中,我们自己的包在src/
文件夹中。
这可能吗?如果重要的话,我们将使用Symfony 2。
您可能应该制作自己的安装程序:http://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md并使用自己的installer-paths
我已经实现了这个composer插件,可以将包安装到用户(自定义)定义的文件夹中,您只需将其包含在composer.json中,按照示例操作,如果您有更多问题,请告诉我:)
https://github.com/mnsami/composer-custom-directory-installer
composer自定义目录安装程序
一个composer插件,用于在vendor
文件夹中默认composer默认安装路径之外的自定义目录中安装不同类型的composer包。
这不是另一个支持非composer包类型的composer-installer
库,即application
。。这只是为了增加在供应商文件夹之外安装composer包的灵活性。此软件包仅支持composer
软件包类型、
https://getcomposer.org/doc/04-schema.md#type
包的类型。它默认为库。
包类型用于自定义安装逻辑。如果你有一个包需要一些特殊的逻辑,你可以定义一个自定义类型。这可能是一个symfony捆绑包、一个wordpress插件或一个typep3模块。这些类型都是特定于某些项目的,它们需要提供一个能够安装该类型包的安装程序。
如何使用
- 在
composer.json
require
部分中包含composer插件:
"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
下。
备注
此安装程序不支持Composertype: project
,因为类型为project
的程序包只有在与symfony/framework-standard-edition
等应用程序外壳一起使用时才有意义,因为其他程序包需要它。
如果仍然是一个案例,请考虑测试我的库(基于mina.nsami的插件):
https://github.com/ideaconnect/composer-custom-directory
允许自定义路径:
"extra":{
"installer-paths":{
"./monolog/": ["monolog/monolog"]
}
甚至动态名称替换:
"extra": {
"installer-paths": {
"./packages/{$name}": ["sourcepackage/package_A","sourcepackage/package_B","sourcepackage/package_B"]
}
},
并带有标志链,允许在运行时对变量进行简单操作:
当前支持的标志为:
F - capitalizes first letter.
P - changes all entries of a _ or - followed by a character to only that character, capitalized.