composer怎么安装dev依赖_composer require dev教程【开发】

2次阅读

composer require 默认不装 dev 依赖,因为它只修改 require 字段;开发依赖必须显式用 –dev 参数写入 require-dev,否则会误入生产环境或被 –no-dev 漏掉。

composer怎么安装dev依赖_composer require dev教程【开发】

composer require 为什么默认不装 dev 依赖

因为 composer require 默认只修改 require 字段,而开发依赖(比如测试工具、代码检查器)必须进 require-dev。直接敲 composer require phpunit/phpunit,它就会被塞进生产依赖里——上线时可能意外打包进容器,或者被 composer install --no-dev 漏掉导致本地跑不通。

加 –dev 才真进 require-dev

这是唯一可靠方式。不加就错,没商量:

composer require --dev phpunit/phpunit ^10
  • --dev 必须显式写,不能靠配置或别名绕过
  • 如果项目已锁定了 composer.lock,这条命令会同时更新 lock 文件里的 require-dev 区块
  • 想指定版本但又怕冲突?用 composer require --dev "phpstan/phpstan:^1.10" --with-all-dependencies,否则某些子依赖可能因版本约束被拒绝安装

install 时 –no-dev 是默认行为吗

不是。本地 composer install 默认装全部(require + require-dev)。真正危险的是部署场景:

  • CI/CD 脚本里常用 composer install --no-dev --optimize-autoloader,这时如果某个 require-dev 包被误写进了 require,它反而会被装上
  • composer update 不带参数时,也会一并更新 require-dev,如果你只想升级生产依赖,得加 --with-dependencies 并手动排除
  • 检查是否混入:运行 composer show --dev 看实际在 require-dev 里的包;再对比 composer show 全量列表,找多出来的项

require-dev 里放了不该放的东西怎么办

常见翻车点是把 laravel/sailspatie/laravel-ray 这类仅开发期用的包,漏掉 --dev 装进了 require。修复很简单,但顺序不能错:

  • 先执行 composer remove laravel/sail(它会从 require 删掉)
  • 再立刻补上 composer require --dev laravel/sail
  • 别用 composer require --dev laravel/sail --update-with-dependencies 直接覆盖,Composer 有时会保留旧依赖树,导致 autoload 错乱

dev 依赖不是“次要依赖”,而是环境边界线。越界一次,CI 就可能报 class 'PhpParserNode' not found 这种看着像语法错误、实则是 autoloader 没加载对地方的问题。

text=ZqhQzanResources