为什么我的 require-dev 依赖在生产环境也被安装了?
发布时间 - 2025-11-10 00:00:00 点击率:次生产环境安装了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 installComposer 会读取 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,就会默认安装所有依赖。请检查你的部署脚本,确保生产构建命令类似:
尤其是 Laravel、Symfony 等框架项目,生产环境不需要测试工具或代码分析组件。
4. 确保 .env 和环境区分清楚
有时候开发者误在生产服务器上运行了 composer update 或本地的 install 命令,导致 dev 包被装上。建议:
- 生产环境只运行
composer install(基于 lock 文件) - 绝不运行
composer update - 使用
COMPOSER_ENV=production环境变量配合脚本判断(部分项目支持)
基本上就这些。只要记住:生产环境部署一定要加 --no-dev,否则 Composer 默认啥
都装。不复杂但容易忽略。
# php
# laravel
# git
# composer
# github
# 工具
# 环境变量
# jenkins
# gitlab
# 为什么
# symfony
# require
# 自动化
# 是因为
# 就会
# 如果你
# 尤其是
# 安装了
# 不需要
# 当你
# 但在
# 并在
# 线上
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
Internet Explorer官网直接进入 IE浏览器在线体验版网址
如何在IIS管理器中快速创建并配置网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel集合Collection怎么用_Laravel集合常用函数详解
晋江文学城电脑版官网 晋江文学城网页版直接进入
Swift开发中switch语句值绑定模式
想要更高端的建设网站,这些原则一定要坚持!
如何在阿里云高效完成企业建站全流程?
如何彻底卸载建站之星软件?
Laravel如何创建自定义中间件?(Middleware代码示例)
Laravel怎么实现模型属性的自动加密
详解Oracle修改字段类型方法总结
在Oracle关闭情况下如何修改spfile的参数
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何安全更换建站之星模板并保留数据?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在宝塔面板中创建新站点?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
如何在服务器上三步完成建站并提升流量?
如何快速搭建高效服务器建站系统?
如何注册花生壳免费域名并搭建个人网站?
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
Laravel如何实现API资源集合?(Resource Collection教程)
桂林网站制作公司有哪些,桂林马拉松怎么报名?
jQuery中的100个技巧汇总
Laravel怎么使用artisan命令缓存配置和视图
Linux系统运维自动化项目教程_Ansible批量管理实战
微信公众帐号开发教程之图文消息全攻略
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何自定义分页视图?(Pagination示例)
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel如何处理文件下载请求?(Response示例)
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
JavaScript数据类型有哪些_如何准确判断一个变量的类型
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
WEB开发之注册页面验证码倒计时代码的实现
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Python结构化数据采集_字段抽取解析【教程】
如何快速启动建站代理加盟业务?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
网站制作壁纸教程视频,电脑壁纸网站?
高端网站建设与定制开发一站式解决方案 中企动力

