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

require 和 require-dev 的本质区别在于它们定义的依赖用途不同,直接影响这些包在生产环境和开发环境中的使用。
require:项目运行所必需的依赖
这个部分列出的是你的项目在生产环境中正常运行所必须的库。Composer 在安装时会默认加载这些依赖,无论当前是开发、测试还是上线部署阶段。
例如:
- 框架核心组件(如 Lar*el、Symfony)
- 数据库抽象层(如 doctrine/dbal)
- 缓存驱动、队列处理等基础设施类库
require-dev:仅用于开发和测试的工具
这个部分包含的是开发者用来提高效率、保障质量的辅助工具,只在本地开发或CI流程中使用,在生产环境中完全不需要。
Vheer
AI图像处理平台
260
查看详情
常见类型包括:
- 单元测试框架(phpunit/phpunit)
- 代码规范检查工具(phpcs、php-cs-fixer)
- 调试工具(psy/psysh)
- 生成文档或执行脚本的辅助包
关键行为差异
理解两者区别的实际影响很重要:
- 执行 composer install --no-dev 时,require-dev 中的所有包都不会安装
- 生产构建流程通常会跳过 dev 依赖,加快部署并减小攻击面
- 某些 IDE 或静态分析工具可能只在 dev 环境下可用,
不影响最终代码执行
以上就是composer.json中的require和require-dev有什么本质区别的详细内容,更多请关注php中文网其它相关文章!

不影响最终代码执行