sylius / web-bundle with knplabs / knp-menu-bundle version 2

时间:2014-03-10 12:57:13

标签: symfony composer-php sylius

我需要在现有的Sylius项目中集成Symfony 2.4。 这个项目已经有了一个依赖项列表,我已经添加了Sylius依赖项。一切正常但只有一个依赖:项目使用的knplabs/knp-menu-bundle2.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(根据网络套件的要求):

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

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

这是我的整个composer.jsonhttp://pastebin.com/V36jy93p

我最好如何解决这个问题?我可以以某种方式使Sylius Web捆绑包使用knp-menu-bundle版本2吗?

1 个答案:

答案 0 :(得分:1)

可能主要的错误是使用仅具有开发稳定性的软件包。从我在packagist.org上看到的情况来看,“knplabs / knp-menu-bundle”已经发布了超过9个月的alpha版本,并且开发分支机构最近一次提交。我不知道这是否可以告诉我什么,但我认为开发人员可能会看到他们的软件没有准备好用于生产,并且可能会建议使用旧的1.x版本。

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

请注意,以前版本的“sylius / web-bundle”确实依赖于“。knplabs / knp-menu-bundle”的2.0。* - dev版本,但我想知道为什么他们会在以后的版本中从该版本中退出。它可能引发了太多问题,追踪正在进行的开发,导致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”的那一行,修复由于该更改而发布的任何可能,创建带有此更改的原始项目的pull请求,在此之前,您可以通过将Github URL添加到composer.json的repositories部分中来包含您自己的存储库而不是原始存储库。

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

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