如何在github上设置我的composer.json以允许包含为库?

时间:2014-06-10 16:57:12

标签: zend-framework2 composer-php

我看过的所有文档,教程和论坛都是关于设置客户端composer.json来下载其他人的软件包,但我正在尝试设置自己的软件包,ZF2模块,所以我可以包含他们在多个项目中。这是我的hello-world尝试。我有一个依赖于shiny-lib存储库的闪亮休息存储库,我想用数字(al?)版本号指定依赖项。 shiny-rest的composer.json:

{
    "name": "shinymayhem/shiny-rest",
    "description": "REST with JSON, XML and api-problem style errors",
    "license": "Apache 2.0",
    "authors": [
        {
            "name": "Reese Wilson",
            "email": "EMAIL"
        }
    ],
    "extra": {
        "branch-alias": {
            "dev-master": "0.0.x-dev"
        }
    },
    "require": {
        "shinymayhem/shiny-lib": "0.0.*",
        "zendframework/zendframework": "2.*"
    },
    "repositories": [
        {
            "url": "https://github.com/shinymayhem/shiny-lib",
            "type": "git"
        }
    ],
    "autoload": {
        "psr-0": {
            "ShinyRest": "src"
        },
        "classmap": [
            "Module.php"
        ]
    }
}

shiny-lib的composer.json:

{
    "name": "shinymayhem/shiny-lib",
    "description": "Base lib with Xml2Array trait",
    "license": "Apache 2.0",
    "authors": [
        {
            "name": "Reese Wilson",
            "email": "EMAIL"
        }
    ],
    "extra": {
        "branch-alias": {
            "dev-master": "0.0.x-dev"
        }
    },
    "require": {
        "zendframework/zendframework": "2.*"
    },
    "autoload": {
        "psr-0": {
            "ShinyLib": "src"
        },
        "classmap": [
            "Module.php"
        ]
    }
}

当我需要在我的客户端的composer.json(包括最小稳定性:dev)上使用shiny-rest:dev-master时,它会正确解析光泽休息库,但后来会说

shinymayhem/shiny-rest dev-master requires shinymayhem/shiny-lib 0.0.* -> no matching package found.

我尝试过几个不同的东西,比如关注documentation at getcomposer.org,或者尝试复制其他作为作曲家包的存储库,但我只是在猜测和检查。如何在源包composer.json中指定版本和依赖项以及别名?某处有一些好的文件吗?

1 个答案:

答案 0 :(得分:1)

您客户的composer.json需要包含闪亮库的存储库行:

"repositories": [
    {
        "url": "https://github.com/shinymayhem/shiny-lib",
        "type": "git"
    }
],

当您在其他项目中包含该lib时,将忽略shiny-rest composer.json中的存储库行 - 只能在根composer.json中指定其他存储库。这是Composer中的一项安全功能,可防止第三方库指定覆盖其他第三方库的标准存储库。