0

我需要集成Sylius到现有Symfony 2.4项目中。这个项目已经有一个依赖列表,我在其中添加了 Sylius 依赖。一切正常,但有一个依赖项:knplabs/knp-menu-bundle项目使用的是2.0.*@dev,而所需的捆绑包sylius/web-bundle是版本1.1.*

现在,当尝试运行时,composer install --prefer-dist它显然会产生冲突:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- sylius/web-bundle 1.0.x-dev requires knplabs/knp-menu-bundle 1.1.* -> satisfiable by knplabs/knp-menu-bundle[1.1.x-dev].
- Conclusion: don't install knplabs/knp-menu-bundle 1.1.x-dev
- Installation request for sylius/web-bundle 1.0.*@dev -> satisfiable by sylius/web-bundle[1.0.x-dev].

删除以下明确提及将使作曲家工作和结帐版本1.1(根据 web-bundle 的要求):

    "knplabs/knp-menu":                         "2.0.*@dev",
    "knplabs/knp-menu-bundle":                  "2.0.*@dev",

但是,当然,在应用程序中给了我错误,因为原始应用程序需要来自版本 2 的逻辑。

这是我的全部内容:http composer.json: //pastebin.com/V36jy93p

我最好如何解决这个问题?我能否以某种方式使 Sylius 网络包使用knp-menu-bundle版本 2?

4

1 回答 1

1

可能主要错误是使用仅具有开发稳定性的包。从我在 packagist.org 上看到的情况来看,“knplabs/knp-menu-bundle”在 9 个多月前发布了 alpha 版本,而开发分支最后一次提交仅在一周前。我不知道这是否能告诉我一些信息,但我认为开发人员可能会看到他们的软件尚未准备好投入生产使用,并且可能会建议使用较旧的 1.x 版本。

如果他们认为这是真的,那么来自这些家伙的相同软件“sylius/web-bundle”只依赖于旧版本,而这完全符合那幅画。该软件的依赖项尚未在新版本中发布,因此无需同时使用新软件包发布该软件。

请注意,以前版本的“sylius/web-bundle”实际上确实依赖于 2.0.*-dev 版本的“knplabs/knp-menu-bundle”,但我想知道为什么他们在以后的版本中退出了该版本。它可能引发了太多问题,跟踪正在进行的开发,导致 9 个月没有发布软件。

作为一般评论,我会说您的 composer.json 包含太多“dev-master”和“@dev”版本,无法解析成一堆稳定的依赖项。

但你能做什么呢?将“knplabs/knp-menu-bundle”别名为 1.1.x 版本可能会有所帮助。您可能会很快发现由于不兼容的类而这将破坏哪些软件依赖项 - 在最坏的情况下,只有在您将代码推送到生产环境后才能发现(您确实需要进行测试,不是吗)。

您还可以向“sylius/web-bundle”的开发人员提出问题,以发布依赖于“knplabs/knp-menu-bundle”的 2.0.x-dev 版本的版本。

另一种方法是克隆“sylius/web-bundle”项目,在他们的 composer.json 中更改依赖于“knplabs/knp-menu-bundle”的那一行,修复由于该更改而可能发出的任何问题,创建拉取请求对于具有此更改的原始项目,在此之前,您可以通过将 Github URL 添加到repositoriescomposer.json 部分来包含您自己的存储库而不是原始存储库。

您还可以尝试说服“knplabs/knp-menu-bundle”的人标记另一个版本,以便更多的软件包能够依赖于该新标签,而不是不依赖于开发分支(这样做会意外地破坏事情,如果您发布稳定的软件,这是不行的)。之后再次触发“sylius/web-bundle”以尝试使用该新版本。

如果一切都失败了,最后一个选择:不要使用“sylius/web-bundle”。或者不要使用“knplabs/knp-menu-bundle”版本 2.0.x-dev。

于 2014-03-10T19:10:38.217 回答