require 是项目运行必需的依赖,如框架和数据库组件,必须部署到生产环境;require-dev 是开发测试工具,如 phpunit 和 phpcs,仅用于本地开发,可通过 --no-dev 参数跳过安装,减少生产环境体积与风险。

require 和 require-dev 的本质区别在于它们定义的依赖用途不同,直接影响这些包在生产环境和开发环境中的使用。
require:项目运行所必需的依赖
这个部分列出的是你的项目在生产环境中正常运行所必须的库。Composer 在安装时会默认加载这些依赖,无论当前是开发、测试还是上线部署阶段。
例如:
- 框架核心组件(如 Laravel、Symfony)
- 数据库抽象层(如 doctrine/dbal)
- 缓存驱动、队列处理等基础设施类库
require-dev:仅用于开发和测试的工具
这个部分包含的是开发者用来提高效率、保障质量的辅助工具,只在本地开发或CI流程中使用,在生产环境中完全不需要。
常见类型包括:
当你运行 composer install 时,如果加上 --no-dev 参数,这些包就不会被安装,常用于线上部署以减少体积和潜在风险。关键行为差异
理解两者区别的实际影响很重要:
- 执行 composer install --no-dev 时,require-dev 中的所有包都不会安装
- 生产构建流程通常会跳过 dev 依赖,加快部署并减小攻击面
- 某些 IDE 或静态分析工具可能只在 dev 环境下可用,不影响最终代码执行










