编曲器: 具有不同最小稳定性级别的必需包

我有一个用于 laravel 安装的作曲家文件,其中包含以下 comper.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 的网站上,它说我可以通过添加以下内容到我的 poser.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的最小稳定值。

是否有一种方法可以在一个单独的需求对象中指定具有 dev最小稳定性设置的哨兵包?

54052 次浏览

答案就是加上 @dev

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

你可以读 这里有更多关于最小稳定性设置的信息

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

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

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

您也可以使用其他 稳定性水平,如 alphabeta结合版本 选择器

例子

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

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

任何允许阿尔法的版本

"cartalyst/sentry": "*@alpha"

根据作曲家的记录:

然而,为了允许不同的稳定性而不在约束级别强制它们,你可以使用像@(例如@dev)这样的稳定性标志来让 Composer 知道一个给定的包可以安装在一个不同于默认的最小稳定性设置的稳定性中。

Https://getcomposer.org/doc/articles/versions.md#stability-constraints