使用 composer install --no-dev 可排除开发依赖,减小 vendor 目录、降低安全风险、加快加载速度,并防止调试工具暴露敏感信息,符合生产环境最佳实践。

在生产环境部署 PHP 项目时,运行 composer install --no-dev 是一个关键步骤。它确保了应用以最安全、最高效的方式加载依赖,避免引入仅用于开发的组件。
减少不必要的依赖包
开发环境中,项目通常会引入一些辅助工具,比如测试框架(PHPUnit)、代码质量检查工具(PHPStan、Psalm)、调试器(Symfony VarDumper)等。这些工具对开发很有帮助,但在生产环境中完全不需要。
使用 --no-dev 参数后,Composer 不会安装 require-dev 中列出的包,从而:
- 减小 vendor 目录体积
- 降低潜在的安全风险(更少的代码 = 更小的攻击面)
- 加快自动加载速度(类映射更精简)
提升安全性
某些开发依赖可能包含敏感功能,例如:
- 调试工具可能暴露服务器信息或变量内容
- 测试工具可能提供未授权的执行入口
- 分析工具可能读取源码或配置文件
如果这些工具被意外部署到线上并被利用,可能导致信息泄露甚至远程代码执行。通过 --no-dev 排除它们,是从源头上切断这类风险的有效手段。
符合最佳实践和自动化部署规范
大多数 CI/CD 流程和部署脚本都会明确区分开发与生产环境的构建命令。例如:
# 开发环境或构建测试镜像 composer install生产环境部署
composer install --no-dev --optimize-autoloader
搭配 --optimize-autoloader 使用,还能进一步提升性能,使类自动加载更快。
基本上就这些。坚持在生产环境使用 composer install --no-dev,是保障应用稳定、安全、高效运行的基本要求,不复杂但容易忽略。









