作曲家:具有不同最低稳定性水平的必需软件包

2022-08-30 08:36:44

我有一个用于 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"
}

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

{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}

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

...
},
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}

当我运行命令加载新包时,我收到一个错误,指出新对象添加不是有效的json。composer update

如果我将 添加到现有对象中,则找不到哨兵包,因为现有要求的最小稳定性值为 。cartalyst/sentryrequirestable

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


答案 1

答案是只需添加@dev

{
    "require": {
        "cartalyst/sentry": "2.0.*@dev"
    },
}

您可以在此处阅读有关最低稳定性设置的更多信息

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

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

这基本上意味着它将始终使用稳定,除非没有办法安装稳定的依赖项,因此使用dev。


答案 2

您还可以使用其他级别的稳定性,例如 ,并结合版本选择器alphabeta

例子

使用插入记号运算符 - 允许 beta 的版本 2 的最大值:

"cartalyst/sentry": "^2@beta"

任何允许 alpha 的版本

"cartalyst/sentry": "*@alpha"

推荐