--dev安装的依赖仅用于开发测试,不加则为生产必需。1. 依赖分类:--dev写入require-dev,非dev写入require。2. 生产环境执行composer install --no-dev时跳过dev依赖。3. 自动加载中dev包类仍可用但应限于开发。4. dev依赖版本变动不影响生产稳定性。区分二者可减小生产体积、提升安全。

使用 composer require --dev 安装的依赖与不加 --dev 的主要区别在于这些包的用途和加载时机。
1. 依赖分类不同
Composer 将依赖分为两类:
- require:项目运行时必需的包,比如框架、数据库组件、工具库等。
- require-dev:仅在开发或测试阶段使用的包,比如 PHPUnit、PHPStan、PsySH、测试 Mock 工具等。
通过 --dev 安装的包会被写入 composer.json 的 require-dev 字段,而不是 require 字段。
2. 生产环境不会安装
当你执行 composer install 时,默认会安装所有依赖。但在生产环境中,通常会加上 --no-dev 参数:
composer install --no-dev这时,只有 require 中的包会被安装,require-dev 里的包会被跳过,从而减少生产环境的体积和潜在安全风险。
3. 自动加载行为差异
开发依赖中的类在默认的自动加载机制下依然可用(只要执行了 composer dump-autoload),但它们只应在开发中使用。例如:
- PHPUnit 测试用例依赖只能在本地跑测试时用到。
- 代码分析工具如 PHP_CodeSniffer 不需要上线。
4. 版本锁定更灵活
因为开发依赖不影响线上功能,所以它们的版本变动不会影响生产稳定性。你可以更自由地升级或降级 dev 包,而不用担心破坏线上服务。
基本上就这些。简单说:--dev 装的是“自己开发时用的工具”,不加的是“用户访问时必须跑起来的东西”。区分清楚有助于维护更安全、轻量的生产环境。










