PHP Composer自定义安装程序



我已经尝试解决这个问题很长一段时间了,但仍然不知道我的错误是什么。

我有两个存储库要合并。应用程序和框架核心。

// Application
 - composer.json
 - public/
 - CCF/
   - core/ <- here the core package should go 
   - vendor/ <- here it goes instead

现在,基本上我想创建一个composer包,将其安装到CCF/core/而不是CCF/vendor/clancats/core/etc..

所以我创建了一个自定义安装程序:

vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php

class ClanCatsFrameworkInstaller extends BaseInstaller
{
    protected $locations = array(
        'core'      => 'CCF/core/',
        'orbit'     => 'CCF/orbit/{$name}/',
    );
}

核心的composer.json

{
    "name": "clancats/core",
    "description": "The ClanCatsFramework Core repository",
    "type": "clancatsframework-core",
    "license": "MIT",
    "require": {
        "php": ">=5.3",
        "composer/installers": "~1.0"
    }
}

应该在CCF/core实现核心的应用程序的composer.json

{
    "type": "project",  
    "require": {
        "php": ">=5.3",
        "clancats/core": "dev-master"
    },
    "config": {
        "vendor-dir": "CCF/vendor"
    },
}

但毕竟composer仍然将核心包安装在/vendor/crancats/等位置。。

所以我的问题是,composer不将核心包安装到CCF/core/,我的错误是什么?

  • 已将composer/installers添加到requires
  • 我创建了一个自定义安装程序,它定义了核心的路径
  • 将核心包的类型设置为我的自定义类型

另一个萦绕在我脑海中的问题是,我的模式错了吗?我的意思是我误解了如何使用composer吗?

Github:

  • 框架安装回购:https://github.com/ClanCats/Framework
  • 核心回购:https://github.com/ClanCats/Core

感谢你们的帮助:)

因此,对于遇到相同问题的每个人:

我的错误是我不需要主存储库中的composer/installers

两个存储库中都需要composer安装程序

所以在这种情况下:

{
    "type": "project",  
    "require": {
        "php": ">=5.3",
        "clancats/core": "dev-master",
        "composer/installers": "~1.0"
    },
    "config": {
        "vendor-dir": "CCF/vendor"
    },
}

解决了问题。

相关内容

  • 没有找到相关文章

最新更新