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

jk9hmnmh  于 2023-03-28  发布在  PHP
关注(0)|答案(3)|浏览(110)

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

我正在尝试为sentry添加bundle。在sentry的网站上,它说我可以通过将以下内容添加到我的composer.json文件中来安装它:

{
    "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

3mpgtkmj

3mpgtkmj1#

答案就是加上@dev

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

你可以读more about minimum stability settings here
另一种方法是将minimum-stability设置为dev,但告诉composer您希望尽可能使用stable:

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

这基本上意味着它将始终使用stable,除非无法安装stable依赖项,因此使用dev。

sqyvllje

sqyvllje2#

您也可以使用其他levels of stability,如alphabeta与version selector 组合。

示例

带插入符号操作符-最多允许测试版的版本2:

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

任何允许alpha的版本

"cartalyst/sentry": "*@alpha"
0s0u357o

0s0u357o3#

来自composer文档:
然而,为了允许各种稳定性,而不是在约束级别强制它们,您可以使用稳定性标志,如@(例如@dev),让Composer知道给定的包可以安装在与默认的最小稳定性设置不同的稳定性中。
https://getcomposer.org/doc/articles/versions.md#stability-constraints

相关问题