Composer:所需的包装具有不同的最小稳定性水平

Chr*_*itz 61 php json laravel composer-php laravel-4

我有一个用于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"
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试添加哨兵包.在哨兵的网站上,它说我可以通过在composer.json文件中添加以下内容来安装它:

{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)

我尝试在当前laravel的末尾添加新的json对象,如下所示:

...
},
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)

当我运行composer update命令加载新包时,我得到一个错误,说新添加的对象是无效的json.

如果我添加cartalyst/sentry到现有require对象,则无法找到sentry包,因为现有要求的最小稳定性值为stable.

有没有办法在具有最小稳定性设置的单独的require对象中指定sentry包dev

Lau*_*nce 122

答案只是补充 @dev

{
    "require": {
        "cartalyst/sentry": "2.0.*@dev"
    },
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处详细了解最小稳定性设置.

另一种方法是将您的最小稳定性设置为开发,但告诉作曲家您希望尽可能使用稳定:

"minimum-stability": "dev",
"prefer-stable" : true
Run Code Online (Sandbox Code Playgroud)

这基本上意味着它将始终使用稳定的UNLESS无法安装稳定的依赖项,因此使用dev.

  • 作为附带评论,以防有人想知道从 CLI 角度来看这会是什么样子:必须调用 `composer require cartalyst/sentry:2.0.*@dev` 。 (3认同)