Do you have a confusion of how do you determine the stability when using composer dependency manager? What should be the minimum stability setting? Do you receive this dreaded error when updating via composer?

 
 
1
2
Your requirements could not be resolved to an installable set of packages.
 

Well all of them probably point to the right stability setting in your composer settings. Read on to understand how you can set your application landscape and package dependencies the right way.

Minimum Stability Settings

Composer accepts these flags as minimum-stability settings. The default setting for minimum-stability if not provided is assumed to be stable, but you could define any of the flags down the hierarchy.

-stable (most stable)
– RC
– beta
– alpha
– dev (least stable)

Resolving Stability Dependencies

So let’s consider you have set a minimum-stability to stable in your composer.json, and on updating packages, receive an error like below:

 
 
1
2
3
4
Your requirements could not be resolved to an installable set of packages.
- vendor/package1 dev-master requires vendor/package2 * -> satisfiable by vendor/package2[dev-master].
- vendor/package3 dev-master requires vendor/package4 * -> satisfiable by vendor/package4[dev-master].
 

The reason for this is that all of your packages need a minimum-stability of stable. This may not be available for all your dependent packages. You do need a lower stability setting for them. So how do you resolve this? Here are the various options that you could consider to resolve the package dependencies.

Option 1: Set minimum-stability to dev

You can lower your minimum-stability down to “dev”. But when you do that, it applies to all constraints and as a result you may get unstable versions of all packages which you do not desire. Let’s consider an example of installing the yiisoft/yii2 framework. You would want a stable release of yii2 to be applied each time you run composer. But setting minimum-stability to stable do affect your install/update of other yii2 extensions like kartik-v/yii2-widgetskartik-v/yii2-grid etc. But the recommendation still is DO NOT change theminimum-stability UNTIL you really need to. If you are working with minimum-stability set tostable, then move on to Option 2.

Option 2: Use stability flags (recommended)

Rather than changing minimum-stability setting, use stability flags. As described in this article – a stability flag is defined as part of a version constraint. Since stability is determined by the root package only, flags are also root-only. Flags defined in dependent packages are simply ignored. You can use flags to whitelist specific unstable packages. So let’s see your stability section of the revised composer.json now for yiisoft/yii2 with kartik-vextensions. If you are installing say kartik-v/yii2-grid extension with yiisoft\yii2. First check composer.json for yii2-grid and then its require section. The package yii2-gridrequires these packages:

 
 
1
2
3
4
5
6
7
8
    "require": {
        "kartik-v/yii2-widgets": "*",
        "kartik-v/yii2-editable": "*",
        "kartik-v/yii2-slider": "*",
        "kartik-v/yii2-money": "*",
        "kartik-v/yii2-checkbox-x": "*"
    },
 

Now in your application composer.json, set yii2-grid and its dependent packages to @devas shown below

 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    "minimum-stability": "stable",
    "require": {
        "php": ">=5.4.0",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-bootstrap": "*",
        "yiisoft/yii2-swiftmailer": "*",
        "kartik-v/yii2-grid": "@dev",
        "kartik-v/yii2-widgets": "@dev",
        "kartik-v/yii2-editable": "@dev",
        "kartik-v/yii2-slider": "@dev",
        "kartik-v/yii2-money": "@dev",
        "kartik-v/yii2-checkbox-x": "@dev"
    },
 

You can note that you did not define an actual version in the root package. Now with this, your yiisoft/yii2 install does not care about the stability of kartik-v/yii2-grid and its required extensions/packages for example.

Option 3: Set prefer-stable option

Another option could be to set the prefer-stable option for your packages. This can be easy to use and can often work for you. For example, you can add the following line in your root composer.json:

 
 
1
2
3
minimum-stability: dev,
prefer-stable: true
 

Composer will automatically then try to figure out the most stable dependencies it can. If you require a dev version or only alphas are available for a package, those will still be selected granted that the minimum-stability allows for it.

Having said that, you may still want to set what stability you really want, and declaring it explicitly. Otherwise, you would not know which version of the package caused what problem. So as a general thumb rule then, option 2 may yet be the best way to go forward in handling minimum stability.

link:http://webtips.krajee.com/setting-composer-minimum-stability-application/

Setting composer minimum stability for your application的更多相关文章

  1. 如何创建自己的composer包

    composer中文网 :https://www.phpcomposer.com/ 一.前期准备: composer 安装 Windows安装: 1.下载安装包,https://getcomposer ...

  2. 如何创建一个自己的【Composer/Packagist】包

    首先让我们踏着欢快的脚步去Github创建一个新库,这里取名 composer-car,又欢快的将它克隆到本地: $ git clone git@github.com:victorruan/compo ...

  3. 通过 Composer Github Packagist制作发布共享PHP包

    参考来源: https://laravel-china.org/topics/1002 https://rivsen.github.io/post/how-to-publish-package-to- ...

  4. 创建你的第一个Composer/Packagist包

    今天我们要介绍一下如何通过Composer和Packagist向PHP社区贡献代码包.首先,如果你是一个PHP开发者但是还不知道什么是Composer,请先参考了一下这篇文章http://docs.p ...

  5. 发布一个PHP包到Packagist, 然后使用Composer安装

    Composer 能够方便的进行项目的依赖管理,  当我们发布一个包并且希望别人通过Composer安装的时候, 就需要将包发布到Composer的包仓库Packagist上面. 下面进行详细的说明一 ...

  6. Composer之搭建自己的包工具

    作为一个标准的PHPer,必须学会优雅的使用composer,最近,萌生了一个想法,我们每搭建一个项目,里面都会有许多的公用的方法和类库,每次使用的时候就是将其拷贝过来,或者重新写一遍,过于繁琐,效率 ...

  7. 如何創建一個自己的 Composer/Packagist 包 (PHP)

    如何創建一個自己的 Composer/Packagist 包 首先讓我們踏着歡快的腳步去Github創建一個新庫,這裏取名 composer-car,又歡快的將它克隆到本地: git clone ht ...

  8. composer 创建自己包

    服务器环境下创建自己的项目文件 初始化composer 打开cmd 窗口,cd 到 backrestore 执行 composer init 命令 D:\phpStudy\WWW\backrestor ...

  9. 开发一个属于自己的第一个Composer/Packagist包

    Composer 给我们带来了诸多的好处: 模块化,降低代码重用成本 统一的第三方代码组织方式 更科学的版本更新 初始化项目,生成composer.json文件 初始实例项目代码目录结构: 现在要在项 ...

随机推荐

  1. 编译cordova-android代码

    开发cordova-android的插件得引入cordova的jar包,网上打包好的参差不齐,也不一定是最新版本,下面我们自己打包 cordova的jar包. 1.clone代码 cordova-an ...

  2. ionic 中使用ion-slide-box

    ion-slide-box 用法: <ion-slide-box class="slide" auto-play="true" does-continue ...

  3. Win10 VMware虚拟机无法打开内核设备“\\.\Global\vmx86“

    前几项与Win7配置相同 用管理员模式打开CMD 运行 net start vmci net start vmx86 net start VMnetuserif 这三条命令 为了不用每次启动都这样,修 ...

  4. codeforces 675B B. Restoring Painting(暴力枚举)

    题目链接: B. Restoring Painting time limit per test 1 second memory limit per test 256 megabytes input s ...

  5. Pascal 语言中二维数组:矩阵问题

    [题目]方阵填数:在一个 N*N的方阵中,填入 1,2..... N*N个数,并要求构成如下格式: 图例:10 11 12  1            9  16 13  2            8 ...

  6. 别人网站生成的json

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sb.ToString()); WebResponse rep = req.GetResp ...

  7. FFT结果的物理意义

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低:而对 于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈 ...

  8. Javascript加载速度慢解决办法

    通常我们的网站里面会加载一些js代码,统计啊,google广告啊,百度同盟啊,阿里妈妈广告代码啊,一堆,最后弄得页面加载速度很慢,很慢.解决办法:换一个js包含的方式,让javascript加载速度倍 ...

  9. CCNA长语

    思科认证网络支持工程师(Cisco Certified Network Associate_CCNA) 专业英文词汇大全 10BaseT-----原始IEEE802.3标准的一部分,1OBaseT是1 ...

  10. Java关键字介绍之this与super

    1.什么是super?什么是this? super关键字表示超(父)类的意思.this变量代表对象本身. 2.使用super&this调用成员变量和方法 可以使用super访问父类被子类隐藏的 ...