composer-php - 如果 *condition*,PHP Composer 需要依赖项
问题描述
有没有办法composer.json
只在满足条件时才要求依赖?
通常,如果 PHP 版本足够高,我想使用 Guzzle 6,否则什么也不做。如果您没有 guzzle,图书馆将处理后备。
我知道您可以使用"some/dependency": "^1.0 || ^2.0"
,它将选择适合您其他要求的最新专业。我正在寻找的是这样的:
"some/dependency": "nothing || ^2.0"
解决方案
您不能直接将其作为composer.json
. 但是,您可以通过创建桥接包来实现这一点,它可能为不同的版本定义不同的依赖关系,这可能有不同的要求。
因此,您可以创建me/guzzle-wrapper
包并:
标记
1.0.0
版本composer.json
:{ "name": "me/guzzle-wrapper", "require": { "php": "<5.5", } }
标记
2.0.0
版本composer.json
:{ "name": "me/guzzle-wrapper", "require": { "php": ">=5.5", "guzzlehttp/guzzle": "^6.3" } }
因此guzzlehttp/guzzle
,您可以使用此元包而不是直接要求,这取决于 Composer 将安装的 PHP 版本2.0.0
,哪个需要 Guzzle,或者1.0.0
不需要任何东西。
但是如果你的包可以在没有 Guzzle 的情况下工作,也许你应该把这个要求移到suggest
部分?
推荐阅读
- c# - 在 ASP.Net 中基于 SQL 表动态生成模型
- macos - 以编程方式禁用 NSButton 删除边框
- javascript - 单击浏览器后退按钮时如何获取当前 URL?
- ios - “仅支持有效的不记名身份验证” - 错误 400
- nuget - 无法创建仅 nuget 内容包
- postgresql - YesQL/pgsql“无法确定参数$1的数据类型”
- javascript - 如何使用 javascript 以编程方式启用和禁用按钮
- python - Python / Pandas 按分组列比较行并更新值
- java - 检测文本编辑是否以域扩展结尾
- c# - 在 t4 模板中获取类属性(vs2015)