生产环境安装了require-dev依赖是因为缺少–no-dev参数。执行composer install时默认会安装全部依赖,包括开发工具;部署时应使用composer install –no-dev –optimize-autoloader命令,并在CI/CD脚本中明确指定该参数,避免将phpunit等开发包部署到线上,同时禁止运行composer update,确保基于composer.lock进行可预测的依赖安装。

如果你发现 require-dev 依赖在生产环境也被安装了,很可能是因为你运行 composer install 时没有正确使用 --no-dev 参数,或者 CI/CD 部署流程中缺少这个关键配置。
1. 默认情况下 Composer 会安装所有依赖
当你执行:
composer install
Composer 会读取 composer.lock 文件并安装 全部依赖,包括 "require" 和 "require-dev" 中的内容。这在本地开发时是正常的,但在生产环境就可能导致问题。
2. 生产环境应使用 –no-dev 参数
在部署到生产环境时,你应该明确告诉 Composer 不要安装开发依赖:
composer install –no-dev –optimize-autoloader–no-dev:跳过 require-dev 中的包(如 phpunit、phpstan、faker 等) –optimize-autoloader:优化类自动加载,提升性能
3. 检查你的部署脚本或 CI/CD 配置
很多自动化部署流程(如 GitHub Actions、GitLab CI、Jenkins、Capistrano 等)如果没特别指定 --no-dev,就会默认安装所有依赖。请检查你的部署脚本,确保生产构建命令类似:
代码小浣熊
代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节
396 查看详情
composer install –no-dev –prefer-dist –optimize-autoloader –classmap-authoritative
尤其是 Laravel、Symfony 等框架项目,生产环境不需要测试工具或代码分析组件。
4. 确保 .env 和环境区分清楚
有时候开发者误在生产服务器上运行了 composer update 或本地的 install 命令,导致 dev 包被装上。建议:
生产环境只运行 composer install(基于 lock 文件) 绝不运行 composer update 使用 COMPOSER_ENV=production 环境变量配合脚本判断(部分项目支持)
基本上就这些。只要记住:生产环境部署一定要加 --no-dev,否则 Composer 默认啥都装。不复杂但容易忽略。
以上就是为什么我的 require-dev 依赖在生产环境也被安装了?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/787684.html
微信扫一扫
支付宝扫一扫