繁体   English   中英

如何基于框架内的组件为作曲家安装程序设置不同的路径

[英]How to set a different path for composer installer based on components inside a framework

我一直在进行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 / installers,但无法在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"
        }
    }
],

您是否看过Composer Custom Installer文档 它做到了。

tl; dr是您需要创建一个(非常简单的)Composer插件来设置自定义安装位置,并且文档将非常具体地指导您完成操作。

另外:经过对composer/installers试验,我的感觉是它可能不支持自定义类型,但是可能允许您设置受支持类型的自定义路径。 那就是:如果您想使用WordPress插件,但将其安装在与普通插件不同的位置,则可以覆盖install-paths ,但不一定需要使用composer/installers来定义自己的类型whooptido-type并进行自定义安装位置。 我努力强调,这种推论是基于今天上午进行实验的经验经验,而不是实际的文档。 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM