suggests 是 composer.json 中用于推荐非必需但常用或增强功能包的可选字段,类型为键值对对象,Composer 安装时以浅灰色在命令行末尾提示,不触发自动安装也不影响依赖解析。

在 Composer 包的 composer.json 中,用 suggests 字段可以友好地向使用者推荐**非必需但常用或增强功能的相关包**。它不会触发自动安装,也不影响依赖解析,纯粹是给开发者看的提示。
什么是 suggests?
suggests 是一个可选字段,类型为对象(key-value),键是包名,值是说明性文字(字符串)。Composer 安装或更新时,会在命令行末尾以浅灰色显示这些提示,帮助用户发现生态中配套的工具、驱动或扩展。
怎么写 suggests?
在你的包的 composer.json 的根级别添加 suggests,例如:
"suggests": {
"monolog/monolog": "用于日志记录的完整 PSR-3 兼容库",
"phpunit/phpunit": "运行单元测试所需(开发阶段)",
"laravel/framework": "如在 Laravel 项目中使用,可配合官方适配器"
}
哪些情况适合加 suggests?
- 你的包提供可插拔接口,有第三方实现(比如缓存驱动、事件监听器、序列化器)
- 常见搭配使用的工具类库(如测试、调试、文档生成)
- 针对特定框架的桥接包(如 Symfony Bundle、Laravel Package)
- 可选的高性能替代组件(如用
ext-redis替代纯 PHP Redis 客户端)
注意事项
- 不要把硬依赖写进
suggests—— 那该放require - 避免推荐已废弃或维护不活跃的包
- 说明文字尽量简短明确,让用户一眼看懂用途和场景
- 不需要版本约束(
suggests不参与版本解析)
基本上就这些。合理使用 suggests,能让你的包更易用、更友好,也更容易融入更大的生态。










