【问题标题】:Composer: required packages with differing levels of minimum-stabilityComposer:具有不同最低稳定性级别的所需软件包
【发布时间】:2014-05-29 22:54:08
【问题描述】:

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

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

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

有没有办法在一个单独的 require 对象中指定哨兵包,该对象的最低稳定性设置为dev

【问题讨论】:

    标签: php json laravel laravel-4 composer-php


    【解决方案1】:

    答案就是加@dev

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

    您可以阅读more about minimum stability settings here

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

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

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

    【讨论】:

    • 我对 symfony 框架有另一个限制,限制了允许的最高版本 "symfony": { "allow-contrib": false, "require": "4.2.*" 因此,如果我在没有删除 composer.lock 的情况下发布您的设置/配置,保留它,这些设置将被还原,所以它可能需要删除 composer.lock 或发出 composer update 命令,但可能会产生额外的不良影响
    • 作为旁注,以防有人想知道从 CLI 的角度来看会是什么样子:必须调用 composer require cartalyst/sentry:2.0.*@dev
    【解决方案2】:

    您也可以使用其他levels of stability,如alphabeta 结合版本选择器

    示例

    使用插入符运算符 - 版本 2 的最大允许测试版:

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

    任何允许 alpha 的版本

    "cartalyst/sentry": "*@alpha"
    

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 2016-02-29
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2017-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多