【问题标题】:How to include "dev-master@dev" in a subdependency with composer?如何在作曲家的子依赖项中包含“dev-master@dev”?
【发布时间】:2017-02-08 21:03:07
【问题描述】:

我有一个问题没能解决。

这是我的例子:

“A”要求:

{
    "require": {
        "symfony/form": "2.*",
        "massivescale/celery-php": "dev-master@dev"
    }
}

(因为 celery-php 没有任何标签)

“B”需要“A”。

{
    "requires": {
        "A": "@stable"
    }
}

如果我没有在“B”中添加“@dev”稳定性需要“A”,我会收到一个错误,因为不会获取 celery-php。 我确实在“B”中添加了“@dev”稳定性需要“A@dev”,“symfony/form”获取“dev”版本。

我找到的唯一解决方案是在“B”中要求“massivescale/celery-php”:“dev-master@dev”,这很糟糕,因为 B 不需要知道 A 需要 celery-php。

我没有搜索的另一个可能的解决方案可能是使用 satis 实例和/或私有 fork 来强制版本号,但对于一个小需求来说需要大量维护。

以下是 Google 群组上同一问题的链接:https://groups.google.com/forum/#!topic/composer-users/K6cMktI-fa4

【问题讨论】:

  • 为什么要强制A的稳定版本?
  • 因为如果我不这样做,symfony/form 的 2.*-dev 分支会被下载,这不是我想要的。我认为最好的选择是在“A”中强制使用别名“dev-master#abcdef as 1.0.0”,但由于别名指的是不稳定版本,所以它不起作用。

标签: composer-php


【解决方案1】:

将此添加到您的根 composer.json :

"prefer-stable" : true,
"minimum-stability": "dev"

这将允许您的二级部门使用开发包。

更多关于稳定性标志的信息:https://igor.io/2013/02/07/composer-stability-flags.html

更多关于稳定性标志实现的细节:https://github.com/composer/composer/issues/908

希望对你有帮助。

【讨论】:

    【解决方案2】:

    如前所述,这里没有真正的解决方案。

    找到的唯一解决方案是主包中所需的开发依赖项。

    真正的解决方案是强制您的组件使用其依赖项的稳定版本。

    【讨论】:

      猜你喜欢
      • 2018-03-06
      • 1970-01-01
      • 2018-12-23
      • 2017-04-20
      • 2014-03-10
      • 1970-01-01
      • 2014-03-27
      • 2011-03-30
      • 2015-10-11
      相关资源
      最近更新 更多