使用 --no-dev 可排除开发依赖,composer install --no-dev --optimize-autoloader 能减小部署体积并提升性能,适用于生产环境、Docker 镜像及 CI/CD 流程。

在生产环境中使用 Composer 的 --no-dev 选项,是为了确保只安装项目运行所必需的依赖包,跳过开发阶段使用的工具(如测试框架、代码分析工具等)。这能减少部署体积、提升安全性,并避免不必要的组件进入生产环境。
理解 --no-dev 的作用
--no-dev 是 Composer 安装命令的一个参数,用于告诉 Composer 忽略 require-dev 中列出的依赖。这些依赖通常包括:
- phpunit/phpunit
- friendsofphp/php-cs-fixer
- phpstan/phpstan
- fakerphp/faker
它们对运行应用无直接帮助,仅用于本地开发或 CI/CD 流程。
在生产部署中正确使用 --no-dev
当你将代码部署到生产服务器时,应执行以下命令:
composer install --no-dev --optimize-autoloader说明:
- --no-dev:不安装 require-dev 中的包
- --optimize-autoloader(或 -o):优化类自动加载,提升性能
建议在构建流程或部署脚本中固定使用该组合命令。
结合环境变量控制行为(可选)
Composer 会读取 COMPOSER_DEV_MODE 环境变量或检查 APP_ENV。你可以在生产环境中设置:
并在 composer.json 中配合脚本或 CI 配置,自动判断是否启用 --no-dev。
CI/CD 和构建镜像中的实践
如果你使用 Docker 或 CI 工具(如 GitHub Actions、GitLab CI),应在生产构建阶段明确使用 --no-dev:
# Dockerfile 示例片段COPY . /app
RUN composer install --no-dev --optimize-autoloader --no-interaction
这样可以保证镜像轻量且不含开发工具。
基本上就这些。只要在生产环境部署时坚持使用 composer install --no-dev --optimize-autoloader,就能有效管理依赖范围和运行效率。









