Php 组合器:最低稳定性水平不同的所需包

Php 组合器:最低稳定性水平不同的所需包,php,json,laravel,laravel-4,composer-php,Php,Json,Laravel,Laravel 4,Composer Php,我有一个用于laravel安装的composer文件,其中包含以下composer.json文件: { "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "laravel/framework": "4.1.*"

我有一个用于laravel安装的composer文件,其中包含以下composer.json文件:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.1.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}
我想给哨兵增加一个包裹。在sentry的网站上,它说我可以通过在composer.json文件中添加以下内容来安装它:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.1.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}
我尝试在当前laravel对象的末尾添加新的json对象,如下所示:

...
},
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}
当我运行
composer update
命令来加载新包时,我得到一个错误,指出新添加的对象不是有效的json

如果我将
cartalyst/sentry
添加到现有的
require
对象中,它将找不到sentry包,因为现有requires的最小稳定性值为
stable


有没有一种方法可以在一个单独的require对象中指定sentry包,该对象的最小稳定性设置为
dev

答案是add
@dev

{
    "require": {
        "cartalyst/sentry": "2.0.*@dev"
    },
}
你可以阅读

另一种方法是将最小稳定性设置为dev,但尽可能告诉composer您希望使用stable:

"minimum-stability": "dev",
"prefer-stable" : true
这基本上意味着它将始终使用稳定,除非无法安装稳定的依赖项,因此使用dev.

您也可以使用其他工具,如
alpha
beta
与版本选择器结合使用

例子 带插入符号运算符-最大版本2允许测试版:

"cartalyst/sentry": "^2@beta"
任何允许alpha的版本

"cartalyst/sentry": "*@alpha"

symfony框架的另一个约束限制了允许的最高版本
“symfony”:{“allow contrib”:false,“require”:“4.2.*”
因此,如果我在没有删除composer.lock的情况下发布了您的设置/配置,则保留它,这些设置将被还原,因此可能需要删除composer.lock或发布composer update命令,尽管这可能会产生额外的不希望的效果,作为旁注,以防有人想知道这会是什么样子rom CLI透视图:必须调用
编写器require cartalyst/sentry:2.0.*@dev