Composer require –dev怎么用 仅安装到开发环境依赖【基础】

11次阅读

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

Composer require –dev怎么用 仅安装到开发环境依赖【基础】

composer require --dev 的作用是把包只加进 require-dev 区域,不进 require,这样它不会出现在生产环境的依赖里——但前提是部署时用 composer install --no-dev(默认行为),否则没意义。

什么时候该用 --dev

你装的包只在本地开发、测试、调试时需要,上线后完全用不到。典型场景包括:

  • phpunit/phpunit:跑单元测试
  • laravel/pintphp-cs-fixer:代码格式化
  • mockery/mockery:写 Mock 对象
  • barryvdh/laravel-debugbar:开发期调试用,线上必须禁用

--dev 会改什么文件

它只修改 composer.jsonrequire-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 不等于自动“仅开发环境可用”。

text=ZqhQzanResources