composer require --dev 将包仅添加到 composer.json 的 require-dev 字段并安装,用于开发测试等非生产场景;需配合 composer install --no-dev 部署才能确保其不进入生产环境。

composer require --dev 的作用是把包只加进 require-dev 区域,不进 require,这样它不会出现在生产环境的依赖里——但前提是部署时用 composer install --no-dev(默认行为),否则没意义。
什么时候该用 --dev
你装的包只在本地开发、测试、调试时需要,上线后完全用不到。典型场景包括:
-
phpunit/phpunit:跑单元测试 -
laravel/pint或php-cs-fixer:代码格式化 -
mockery/mockery:写 Mock 对象 -
barryvdh/laravel-debugbar:开发期调试用,线上必须禁用
--dev 会改什么文件
它只修改 composer.json 的 require-dev 字段,并执行 composer update 安装对应包(含其依赖)。不会碰 require,也不会删已有包。
示例命令:
composer require --dev phpunit/phpunit:^10
执行后 composer.json 会多出:
"require-dev": {
"phpunit/phpunit": "^10"
}
常见误操作和后果
容易忽略的关键点:
- 装错位置:比如把
symfony/var-dumper装成--dev,但你在AppServiceProvider里用了dump()—— 线上就会报Class not found - 部署没关
--dev:如果上线时运行的是composer install(没加--no-dev),所有require-dev包仍会被装上,浪费空间还可能引入安全风险 - CI/CD 流水线漏配置:很多 CI 脚本默认只跑
composer install,得手动加--no-dev才真正隔离
真正起作用的不是 --dev 这个开关本身,而是你后续怎么 install、怎么部署。光加了 --dev 不等于自动“仅开发环境可用”。










