首页 文章

如何要求依赖于其他本地包的本地包

提问于
浏览
2

A有以下文件夹,每个文件夹包含一个项目:

PackageA
PackageB
PackageC

PackageA 取决于 PackageB 女巫还取决于 PackageC ,每一个都是一个git存储库 .

这是 PackageA composer.json:

{
    "name": "packagea/packagea",
    "require": {
         "packageb/packageb": "dev-master"
    }
    "repositories": [
        {
            "type": "vcs",
            "url": "../PackageB"
        }
    ]
}

这是 PackageB composer.json:

{
    "name": "packageb/packageb",
    "require": {
         "packagec/packagec": "dev-master"
    }
    "repositories": [
        {
            "type": "vcs",
            "url": "../PackageC"
        }
    ]
}

这是 PackageC composer.json:

{
    "name": "packagec/packagec"
}

这是我在PackageA文件夹上尝试 composer update 时得到的:

您的要求无法解析为可安装的软件包集 . 问题1 - packageb / packageb dev-master的安装请求 - > packageb / packageb [dev-master]可满足 . - packageb / packageb dev-master需要packagec / packagec dev-master - >找不到匹配的包 . 可能的原因: - 包名称中的拼写错误 - 根据您的最小稳定性设置,包中没有足够稳定的版本,请参阅https://getcomposer.org/doc/04-schema.md#minimum-stability for更多细节 .

但是,在 PackageB 上指定了 PackageC 依赖项

我做错了什么?

1 回答

  • 3

    私有依赖的主要技巧是 repositories 中的条目 composer 在整个树中不共享 . 因此,如果你有 project ,它需要来自VCS的 package A ,那么你的 project 需要在自己 composer.jsonrepositories 部分中包含正确的条目 . 这很明显,但现在想象 package A 需要来自不同私有存储库的 package B . 因此,您需要添加 package B composer.jsonrepositories 所需的内容,但是当该程序包的单元测试工作正常时,您仍然会在尝试将该组件包含在_1150059中时失败,就像您描述的那样 . 这都是因为这些依赖性来源 . 不太明显的解决方案是将所有私有存储库包含在 projectcomposer.json 中 - 即使它不是直接需要或使用的 . 换句话说, projectcomposer.json 必须包含其包含的所有包所需的VCS存储库条目, package Apackage B (依此类推) . 在你的情况下,你需要让它像这样:

    {
        "name": "packagea/packagea",
        "require": {
             "packageb/packageb": "dev-master"
        }
        "repositories": [
            {
                "type": "vcs",
                "url": "../PackageB"
            },
            {
                "type": "vcs",
                "url": "../PackageC"
            }
        ]
    }
    

相关问题