conflict 字段用于声明当前包与某些包或版本互不兼容,安装时主动报错阻止冲突组合;格式为键值对,键是包名,值是版本约束,不替代 replace 或 require。

Composer 的 conflict 字段不是用来“防止”版本冲突的,而是用来明确声明当前包与某些其他包(或版本)互不兼容。它不自动解决冲突,但会在安装或更新时主动报错,阻止 Composer 拉入已知会出问题的依赖组合。
conflict 字段的作用机制
当你在 composer.json 中定义了 "conflict",Composer 会在依赖解析阶段检查:如果当前项目(或其依赖树中任意包)最终需要安装被声明为 conflict 的包或版本,就会中断操作并抛出清晰错误,例如:
- Root composer.json requires foo/bar ^2.0
- foo/bar 2.0 conflicts with baz/qux ^3.0
- baz/qux ^3.0 is required by root composer.json
如何正确声明 conflict
格式为键值对,键是包名,值是版本约束(支持通配符、比较符等),例如:
"conflict": { "monolog/monolog": " —— 表示本包不能与 Monolog 2.0 以下版本共存"conflict": { "phpunit/phpunit": "9.5.0", "laravel/framework": ">=10.0.0 —— 精确排除特定危险版本- 可同时声明多个不兼容项,一行一个更易维护
典型使用场景
常见于以下情况,用于提前规避运行时错误或行为异常:
标签: js json composer 黑名单 键值对 red
还木有评论哦,快来抢沙发吧~