使用 --no-dev 时 Composer 不安装 require-dev 依赖,导致其自动加载配置不会写入 vendor/autoload.php,生产环境若引用这些类将报 Class not found 错误,因此需确保生产代码不依赖 require-dev 中的包。

使用 composer install --no-dev 时,Composer 不会安装 require-dev 中列出的依赖包。这会影响自动加载,因为这些开发专用类库和它们的自动加载规则将不会被写入 vendor/autoload.php 的映射中。
自动加载机制依赖已安装的包
Composer 的自动加载是基于 vendor/composer/autoload_psr4.php、autoload_classmap.php 等文件生成的,这些文件只包含当前实际安装的包的命名空间映射。如果某个包只在 require-dev 中定义(如 phpunit、phpstan、faker),执行 --no-dev 后该包不会下载,其自动加载配置也不会生成。
对代码运行的实际影响
如果你的应用代码中引用了仅用于开发的类(例如测试辅助工具或调试组件),在生产环境执行 --no-dev 安装后,这些类将无法被自动加载,导致 Class not found 错误。因此,应确保生产代码不依赖任何 require-dev 中的类。
典型使用场景
常见于生产部署流程:- CI/CD 构建阶段使用默认
composer install,包含开发依赖 - 部署到生产服务器时运行
composer install --no-dev,减小体积并提升安全性 - 生产环境的自动加载更精简,只保留运行所需类库的映射
基本上就这些:--no-dev 通过排除开发依赖,间接限制了自动加载的范围,确保只有生产必需的类能被加载。










