Setting composer minimum stability for your application
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-widgets
, kartik-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-v
extensions. 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-grid
requires 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 @dev
as 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的更多相关文章
- 如何创建自己的composer包
composer中文网 :https://www.phpcomposer.com/ 一.前期准备: composer 安装 Windows安装: 1.下载安装包,https://getcomposer ...
- 如何创建一个自己的【Composer/Packagist】包
首先让我们踏着欢快的脚步去Github创建一个新库,这里取名 composer-car,又欢快的将它克隆到本地: $ git clone git@github.com:victorruan/compo ...
- 通过 Composer Github Packagist制作发布共享PHP包
参考来源: https://laravel-china.org/topics/1002 https://rivsen.github.io/post/how-to-publish-package-to- ...
- 创建你的第一个Composer/Packagist包
今天我们要介绍一下如何通过Composer和Packagist向PHP社区贡献代码包.首先,如果你是一个PHP开发者但是还不知道什么是Composer,请先参考了一下这篇文章http://docs.p ...
- 发布一个PHP包到Packagist, 然后使用Composer安装
Composer 能够方便的进行项目的依赖管理, 当我们发布一个包并且希望别人通过Composer安装的时候, 就需要将包发布到Composer的包仓库Packagist上面. 下面进行详细的说明一 ...
- Composer之搭建自己的包工具
作为一个标准的PHPer,必须学会优雅的使用composer,最近,萌生了一个想法,我们每搭建一个项目,里面都会有许多的公用的方法和类库,每次使用的时候就是将其拷贝过来,或者重新写一遍,过于繁琐,效率 ...
- 如何創建一個自己的 Composer/Packagist 包 (PHP)
如何創建一個自己的 Composer/Packagist 包 首先讓我們踏着歡快的腳步去Github創建一個新庫,這裏取名 composer-car,又歡快的將它克隆到本地: git clone ht ...
- composer 创建自己包
服务器环境下创建自己的项目文件 初始化composer 打开cmd 窗口,cd 到 backrestore 执行 composer init 命令 D:\phpStudy\WWW\backrestor ...
- 开发一个属于自己的第一个Composer/Packagist包
Composer 给我们带来了诸多的好处: 模块化,降低代码重用成本 统一的第三方代码组织方式 更科学的版本更新 初始化项目,生成composer.json文件 初始实例项目代码目录结构: 现在要在项 ...
随机推荐
- BI跟报表一样吗?
一.报表≠BI很多的人认为,报表就是BI.实际上,报表只是BI的一部分,虽然BI应用的结果通常需要通过报表来展示,但是,BI绝对不仅仅是报表.其实,大家对这些概念的理解,如同15年前的ERP一样.19 ...
- 零碎记录Hadoop平台各组件使用
>20161011 :数据导入研究 0.sqoop报warning,需要安装accumulo: 1.下载Microsoft sql server jdbc, 使用ie下载,将42版j ...
- 行列转换 pivot
select * from ( select isnull(c.type,'其他') type,d from ( select ID,Record_code,code,day(thedate) d f ...
- CSS之全屏背景图
吐槽啦:Yeah 明天就是国庆了o(* ̄▽ ̄*)o!哈哈,提前祝福各位园友国庆快乐.假期愉快.生活美满.天天开心!国庆我要回家一趟,把一些不用的东西带回家,走访一下亲朋好友,在家打几天酱油~~~ 言 ...
- php面向对象的特性:OOP的继承
1.关键字extends 2.PHP只支持单继承,不支持方法重载 /*使用protect 调用字段*/ class Computer{ //父类的字段 protected $_name="联 ...
- jquery里用each遍历的值存到数组和字符串
$("img").each(function(){ var a = $(this).attr("src"); }); //遍历后存放到数组中..要用的时候再根据 ...
- Vim 保存和退出命令
命令 简单说明 :w 保存编辑后的文件内容,但不退出vim编辑器.这个命令的作用是把内存缓冲区中的数据写到启动vim时指定的文件中. :w! 强制写文件,即强制覆盖原有文件.如果原有文件的访问权限不允 ...
- jacob 给word加印的功能
花了两天时间,参考了一些资料,总算是处理好了这样一个技术点. 关键的心得如下: 使用jacob,重点不是jacob本身,而是office的一些API资料.比如需要知道光标的移动, 包括上下左右的mov ...
- 【风马一族_Android】Android 前端内容1
Android 前端内容 4.1 View 类概述 4.1.1 关于 View //类型说明 view(视图)指的是用户界面组件的基本构建基块.一个视图占据屏幕上的矩形区域,负责绘图和事件处理.视图是 ...
- <Apache服务的搭建"三件套"《目录验证》《虚拟主机》《加密证书》>
自己没事会整理一些小知识,复习原来的同时也帮助新手. vvvvvvvvvvvvv开启apache目录验证vvvvvvvvvvvvvv htpasswd -cm uers redhat //redha ...