新闻中心

如何清理 Composer vendor 目录中不必要的文件(如文档、测试)来减小项目体积?

2025-12-13
浏览次数:
返回列表
可配置 Composer 的 archive 选项或使用 composer-cleaner 插件自动剔除非运行必需文件以减小 vendor 体积;archive 配置仅对 dist 包生效,插件支持自定义清理规则并自动触发,配合部署脚本可进一步精简,最终缩减 30%~60% 体积。

如何清理 composer vendor 目录中不必要的文件(如文档、测试)来减小项目体积?

可以配置 Composer 的 archive 选项或使用插件,在安装/更新时自动剔除文档、测试、Git 目录等非运行必需文件,从而显著减小 vendor 体积。

启用 Composer 内置的 archive 配置

在项目根目录的 composer.json 中添加 archive 配置,控制从包中排除哪些路径:

  • 支持通配符,如 "exclude": ["/tests", "/Tests", "/docs", "/Docs", "/.*", "/phpunit.xml", "/CHANGELOG.*"]
  • 该配置仅对从 Packagist 下载的 zip 包生效(即 "dist" 源),对 "source"(git clone)无效
  • 修改后需重新执行 composer installcomposer update 才会生效

使用 composer-cleaner 插件(推荐)

这是一个轻量、专注清理的第三方插件,能自动删除常见冗余内容:

  • 安装:composer require --dev dealerdirect/composer-cleaner
  • 它默认清理:.git.githubtestsTestsdocsExamplesphpunit.xmlCHANGELOGCONTRIBUTING.md
  • 支持自定义规则,在 composer.json 中加 "cleaner-exclude" 字段即可扩展
  • 清理动作在 post-autoload-dump 阶段自动触发,无需手动调用

配合部署脚本做二次精简(生产环境适用)

在 CI/CD 或部署流程中,可追加安全清理步骤:

拾贝 拾贝

一键同步微信读书所有笔记和划线,并在新标签页回顾

拾贝 186 查看详情 拾贝
  • 删除所有 .md.txt.rst 文档文件:find vendor/ -name "*.md" -delete
  • 移除 PHP 测试相关目录和文件:find vendor/ -path "*/tests" -o -path "*/Tests" -o -name "*Test.php" -o -name "phpunit.xml*" | xargs rm -rf
  • 注意:避免误删 vendor/autoload.phpvendor/composer 目录

验证清理效果与注意事项

清理后建议快速检查是否影响功能:

  • 运行 composer dump-autoload 确保自动加载正常
  • 执行关键业务逻辑或单元测试(如果有的话),确认无类找不到错误
  • 不建议在开发环境激进清理,因为 IDE 跳转、调试、阅读源码可能依赖文档和测试示例
  • 若某包因清理导致异常,可在 composer.json 中用 "preserve-paths" 单独保留其特定目录

基本上就这些。合理配置 + 插件辅助,能让 vendor 缩减 30%~60% 体积,尤其对大型项目效果明显,又不破坏运行稳定性。

以上就是如何清理 Composer vendor 目录中不必要的文件(如文档、测试)来减小项目体积?的详细内容,更多请关注php中文网其它相关文章!


# vendor目录  # composer  # 文档  # 开发环境  # github  # json  # git  # js  # php  # 鸭脖营销推广目标  # 网站优化工作职责  # 东莞网站品牌推广  # 怎么利用网络营销推广  # 盘龙区seo联系电话  # 广州抖音推广营销培训班  # 今日头条关键词排名查看  # 海北网站建设和优化  # 乐陵网络推广seo优化  # 宾馆网站建设  # 如何在  # 加载  # 仅对  # 如何正确  # 旧版  # 目录中  # 有什么区别  # 自定义  # 拾贝 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 12306怎么选座位选到安静区_12306选座安静区域选择策略  C++指针和引用有什么区别_C++内存管理核心概念深度解析  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  浏览器打开即用 美图秀秀网页版入口  mysql备份恢复性能优化_mysql备份恢复性能优化方法  Tabulator表格中精确实现日期时间排序的指南  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  React中useState与局部变量:理解组件状态管理与渲染机制  利用Bokeh CustomJS动态控制DataTable列可见性  PySpark中高效提取字符串右侧可变长度数字:使用regexp_extract  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  必由学官网快捷入口 必由学网页版在线学习平台  Win10双系统截图高效法 截屏快捷键速记【技巧】  在哪找SublimeJ远程工具_SFTP插件配置教程  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  顺丰国际快递查询 国际件官方查询入口  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  必由学官网首页入口 必由学教师网页版登录指南  Python多版本共存与虚拟环境管理深度指南  php源码怎么看淘宝客系统_看php源码淘宝客系统技巧  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  mc.js免安装版 mc.js一键畅玩入口  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  Android Studio计算器C键功能异常排查与修复教程  快手赚钱渠道_快手收益来源  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  如何使用Go和Martini动态服务解码后的图片  Excel如何用迷你图显趋势_Excel用迷你图显趋势【趋势小图】  Python多线程中正确使用sigwait处理SIGALRM信号  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  C++如何实现单例模式_C++设计模式之线程安全的单例写法  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  解决Flask中Quill编辑器内容提交失败及TypeError的指南  必由学在线入口 必由学网页版快速登录入口  qq游戏手机版下载安装_qq游戏移动端入口  解决macOS上安装pyhdf时‘hdf.h’文件缺失的编译错误  Django通过AJAX异步上传图片并保存至模型的完整指南  2025-2030年全球乘用车销量预测:新能源成增长主力  基于动态规划的房屋花卉种植最小成本算法详解  MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具  c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧  手机CPU怎么影响游戏体验_手机CPU对游戏性能的影响分析  cad如何更改注释性对象的比例_cad注释性比例调整方法  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理  python3时间如何用calendar输出? 

搜索