我一直致力于PHP Framework开发,我们希望将这些组件从核心分离到单独的包中。像这样:
vendor /
username/frameworkname /
core/
Namespace /
Core /
..Framework core files here
components/
Namespace /
Component
ComponentOne
ClassOne.php
ClassTwo.php
composer.json
LICENSE.txt
README.md
ComponentTwo
ClassOne.php
ClassTwo.php
ClassThree.php
composer.json
README.md
LICENSE.txt
ComponentHopeYouFotIT!
像这样的作曲家需要核心:
composer require name/framework-core
并且能够在
中安装它vendor/username/frameworkname/src/core/Namespace/Core/
以及任何类似的组件:
composer require name/componentname
并且能够将其安装在:
vendor/username/frameworkname/src/components/Namespace/Component/
因此,我们不必为任何新组件创建单独的文件夹,并且可以像这样使用:
use Namespace\Core\CoreClass;
use Namespace\Component\{
ComponentOne\ClassTwo,
ComponentTwo\ClassOne
};
有可能吗?
我个人已经尝试过Composer 作曲家/安装程序,但无法弄清楚composer.json中的正确设置。
"config": {
"vendor-dir": "vendor/username"
},
"repositories": [
{
"type": "package",
"package": {
"name": "frameworkname/componentname",
"version": "master",
"source": {
"url": "https://github.com/username/componentname",
"type": "git",
"reference": "master"
}
},
"require": {
"composer/installers": "~1.0"
}
}
],
答案 0 :(得分:0)
你看过Composer Custom Installer documentation了吗?它做到了。
tl; dr是你需要创建一个(非常简单的)Composer插件来设置自定义安装位置,文档将非常具体地介绍它。
旁白:我的感觉是,对composer/installers
进行了一些实验,它可能不支持自定义类型,但可能允许您为受支持的类型设置自定义路径。也就是说:如果您想使用WordPress插件,但将其安装在与正常情况不同的地方,则可以覆盖install-paths
,但您无法使用composer/installers
来定义自己的类型{ {1}}具有自定义安装位置。我强烈地强调,这种推断是基于今天早上试验它的经验经验,而不是实际的文件。 ;)