如何在与另一个包具有相同名称的composer中使用包?

时间:2015-04-01 20:25:53

标签: composer-php

我有一个罕见的案例,我在这里有两个包装工作者因为我正在研究Drupal项目。我有https://packagist.orghttp://packagist.drupal-composer.org/

这里的问题是他们都定义了包drupal / coder。其中一个尊重composer.json,另一个不尊重,但生成一个。我正在努力创建一个超过here的问题,告诉他们尊重composer.json是可用的。

我想使用packagist.org中的软件包,但由于我定义了packagist.drupal-composer.org,我无法做到。

是否有办法从特定来源识别包,或重新定义已有包的存储库。

我尝试添加

{
  "type": "vcs",
  "url": "http://git.drupal.org/project/coder.git"
}

在我的存储库中无济于事。执行composer update; composer show只会向我显示packagist.drupal-composer.org中的包。另外,定义:

{
  "type": "composer",
  "url": "http://packagist.org"
}

为我提供相同的结果。

我最后的想法是定义一个"包"并使用不同的名称将其指向存储库但似乎是一种蹩脚的解决方法,因为那时我必须维护"版本"。

2 个答案:

答案 0 :(得分:2)

是的,这绝对是个问题。但是这里有一个解决方法,只是将packagist.drupal-composer.org上面的包定义到你的composer.json。


"repositories": [
    {
        "type": "composer",
        "url": "https://packagist.org/p/drupal/coder.json"
    },
    {
        "type": "composer",
        "url": "http://packagist.drupal-composer.org"
    }
]

答案 1 :(得分:1)

  1. 您将Drupal的packagist定义为Composer类型repo。
  2. 您为drupal/coder repo定义了一个git仓库。
  3. 这两个定义都会进入repository部分。

    现在:所有包都是从http://packagist.drupal-composer.org/获取的,drupal/coder除外。

    你走了:

    {
        "type": "project",
        "repositories": [
            {
                "type": "git",
                "url": "http://git.drupal.org/project/coder.git"
            },
            {
                "type": "composer",
                "url": "packagist.drupal-composer.org"
            }
        ],
        "require": {
            "drupal/coder": "8.2.1"
        }
    }