我有一个用于 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
。
有没有一种方法可以在具有最低稳定性设置 dev
的单独要求对象中指定哨兵包?
答案只是添加 @dev
{
"require": {
"cartalyst/sentry": "2.0.*@dev"
},
}
您可以阅读more about minimum stability settings here。
另一种方法是将您的最低稳定性设置为 dev,但告诉作曲家您想尽可能使用稳定:
"minimum-stability": "dev",
"prefer-stable" : true
这基本上意味着它将始终使用 stable 除非无法安装 stable 依赖项,因此使用 dev。
您还可以使用其他 levels of stability,如 alpha
、beta
与版本 selector 结合使用。
例子
使用插入符号运算符 - 允许测试版的最大版本 2:
"cartalyst/sentry": "^2@beta"
任何允许 alpha 的版本
"cartalyst/sentry": "*@alpha"
从作曲家文档:
然而,为了允许各种稳定性而不在约束级别强制它们,您可以使用像@(例如@dev)这样的稳定性标志来让 Composer 知道给定的包可以安装在与默认最低稳定性设置不同的稳定性中。
https://getcomposer.org/doc/articles/versions.md#stability-constraints
不定期副业成功案例分享
"symfony": { "allow-contrib": false, "require": "4.2.*"
因此,如果我在没有删除 composer.lock 的情况下发布您的设置/配置,保留它,这些设置将被还原,因此可能有必要删除作曲家。锁定或发出 composer update 命令,虽然可能会产生额外的不良影响composer require cartalyst/sentry:2.0.*@dev
。