Composer php silex/silex 1.0.*@dev->;找不到匹配的包

Composer php silex/silex 1.0.*@dev->;找不到匹配的包,composer-php,silex,Composer Php,Silex,如果我创建一个空文件夹并将composer.json放在那里: { "require": { "silex/silex": "1.0.*@dev" } } 然后运行composer安装——它工作正常,microframework silex及其所有要求都将安装到供应商文件夹中。嗯 现在有一个更复杂的例子,我不明白为什么它不起作用。 我有一个项目(称为“FB”),它依赖于我自己的“某种框架”(称为“light/light4”)。 FB项目的composer.jso

如果我创建一个空文件夹并将composer.json放在那里:

{
    "require": {
        "silex/silex": "1.0.*@dev"
    }
}
然后运行
composer安装
——它工作正常,microframework silex及其所有要求都将安装到供应商文件夹中。嗯

现在有一个更复杂的例子,我不明白为什么它不起作用。 我有一个项目(称为“FB”),它依赖于我自己的“某种框架”(称为“light/light4”)。 FB项目的composer.json:

{
    "repositories":[
        {
            "type":"hg",
            "url":"http://bitbucket.org/pqr/light4"
        }
    ],
    "require":{
        "light/light4":"dev-default"
    }
}
{
    "name":"light/light4",
    "version":"1.0.0",
    "require":{
        "php":">=5.4.0",
        "silex/silex": "1.0.*@dev",
        "twig/twig":">=1.8,<2.0-dev",
        "monolog/monolog":">=1.0.0",
        "symfony/validator":"2.1.*",
        "symfony/console":"2.1.*"
    },
    "autoload":{
        "psr-0":{
            "Light":"src/"
        },
        "files":[
            "src/functions/body.php", "src/functions/db.php", "src/functions/file.php", "src/functions/misc.php"
        ]
    }
}
如您所见,这取决于托管在bitbucket上的框架light/light4。 然后是light/light4 composer.json:

{
    "repositories":[
        {
            "type":"hg",
            "url":"http://bitbucket.org/pqr/light4"
        }
    ],
    "require":{
        "light/light4":"dev-default"
    }
}
{
    "name":"light/light4",
    "version":"1.0.0",
    "require":{
        "php":">=5.4.0",
        "silex/silex": "1.0.*@dev",
        "twig/twig":">=1.8,<2.0-dev",
        "monolog/monolog":">=1.0.0",
        "symfony/validator":"2.1.*",
        "symfony/console":"2.1.*"
    },
    "autoload":{
        "psr-0":{
            "Light":"src/"
        },
        "files":[
            "src/functions/body.php", "src/functions/db.php", "src/functions/file.php", "src/functions/misc.php"
        ]
    }
}
silex/silex 1.0.*@dev->找不到匹配的软件包
-为什么???它适用于简单的空项目,但不适用于需求链:(

composer dev irc有人建议将“silex/silex”放入FB项目的general composer.json中:“1.0.*@dev”。我尝试过——现在它起作用了:所有软件包都安装在稳定版本中,开发版本中唯一的silex/silex是我想要的。现在我完全搞糊涂了

问题仍然存在-为什么它在general composer.json中工作,而在嵌套(必需的)project light/light4中不工作?我该如何理解问题的根源,或者它只是composer的一个bug?

正如所说:“require and require dev额外支持稳定性标志(仅限根)”

这些标志只从根包中读取(请参阅),因为这样可以让您的项目完全控制包的稳定性。显然,当您的某些依赖项依赖于不稳定的内容时,这是一个问题,但是随着越来越多的包具有composer可用的稳定版本,这种情况应该会变得更好