【问题标题】:How do i set my composer.json on github to allow inclusion as a library?如何在 github 上设置我的 composer.json 以允许包含为库?
【发布时间】:2014-06-10 16:57:11
【问题描述】:

我看过的所有文档、教程和论坛都是关于设置一个客户端 composer.json 来下载其他人的包,但我正在尝试设置我自己的包,ZF2 模块,所以我可以包括他们在多个项目中。这是我的 hello-world 尝试。我有一个 shiny-rest 存储库,它依赖于 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 时,它会正确解析 shiny-rest 存储库,但随后会说

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

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

【问题讨论】:

    标签: zend-framework2 composer-php


    【解决方案1】:

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

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

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

    【讨论】:

    • 成功了,但是人们如何自动包含依赖项?它需要使用packagist吗?这个是怎么做到的? github.com/zendframework/zf2/blob/master/composer.json
    • 是的,用packagist注册就不用手动设置repository URL了。
    • zf2 的 composer.json 将 sebastianbergmann/phpcov 指定为具有存储库 url 的依赖项。 phpcov 似乎没有在 packagist 中注册,并且使用 --dev 安装 zf2 确实安装了该软件包
    • 嗯,这对我来说是个新闻。也许这仅适用于 --dev 标志。
    • @rwilson04 如果您查看#L15,您将看到ZF2 将sebastianbergmann/phpcov 定义为一个包:请查看作曲家docs 以获得描述:)
    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多