suggests 是提示可选依赖,不强制安装,如 Laravel 建议使用 guzzlehttp/guzzle;require-dev 是开发时必需的依赖,如 PHPUnit,影响依赖结构但不用于生产环境。

在 Composer 中,"suggests" 和 "require-dev" 的作用完全不同,语义上也不在一个维度。
suggests:建议性信息,不影响功能
suggests 是一种提示机制,用来告诉用户“如果安装某个包,可以增强当前包的功能”,但它不是必需的。
- 不会自动安装列出的包
- 只是提醒开发者:“你可能还需要这个”
- 比如 Laravel 包可能会 suggest 使用 guzzlehttp/guzzle 来发送 HTTP 请求,但你不装它,核心功能仍可用
- 属于文档性质的信息,对依赖解析无影响
require-dev:开发时需要的依赖
require-dev 定义的是仅在开发或测试阶段需要的包,比如 PHPUnit、PHPStan、Mockery 等。
- 这些包会在执行
composer install时被安装(除非加了--no-dev) - 生产环境部署时通常使用
composer install --no-dev,跳过这些包 - 直接影响项目依赖结构,是真正的依赖声明
- 和
require不同,它不用于运行时功能
简单说:suggests 是“你可以考虑装一下”,require-dev 是“我们开发时得用它,但线上不用”。前者是提示,后者是实际依赖。










