讲师中心 微信公众号
AI工具推荐 视频效率加速

如何解决ComposerVendor目录臃肿问题,使用liborm85/composer-vendor-cleaner让你的项目更轻盈

雨芳姑娘_2789

雨芳姑娘_2789

发布时间:2025-11-12 21:38:01

|

543人浏览过

|

来源于php中文网

原创

如何解决composervendor目录臃肿问题,使用liborm85/composer-vendor-cleaner让你的项目更轻盈

最近在处理一个大型PHP项目的部署工作时,我遇到了一个让人头疼的问题:每次部署,光是上传 vendor 目录就要花费大量时间。这个目录动辄几百兆甚至上G,里面包含了各种第三方库的测试文件、文档、示例代码、.git 目录、.travis.yml 配置等等,这些东西在生产环境中根本用不到,却白白占用了服务器空间,拖慢了部署速度。

我尝试过一些土办法,比如在部署后手动删除 vendor 目录下的 tests、docs 等文件夹,但这不仅效率低下,而且很容易遗漏或者误删,导致程序出现意想不到的问题。尤其是在CI/CD流程中,这种手动干预的方式更是不可取。我急需一个自动化、可靠的解决方案。

Composer在线学习地址:学习地址

幸运的是,PHP社区总有大神出手相助!经过一番搜索,我发现了 liborm85/composer-vendor-cleaner 这个Composer插件,它简直是为解决我的痛点而生。

告别臃肿:liborm85/composer-vendor-cleaner 登场

liborm85/composer-vendor-cleaner 是一个Composer插件,它的核心功能是在 composer install 或 composer update 之后,自动扫描并清理 vendor 目录中那些你指定为“不必要”的文件和文件夹。它通过高度灵活的配置,让你能够精确控制哪些内容应该被移除,从而在不影响项目功能的前提下,大幅减小 vendor 目录的体积。

如何使用它让项目“瘦身”?

使用 liborm85/composer-vendor-cleaner 非常简单,主要分为安装和配置两步。

1. 安装插件

你可以选择将其安装到你的项目本地,或者全局安装。对于大多数项目,推荐本地安装,这样配置会随着项目一起管理:

composer require liborm85/composer-vendor-cleaner

如果你希望在所有项目中使用相同的清理规则,可以考虑全局安装:

One-click installation of GitHub projects
One-click installation of GitHub projects

GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。

下载
composer global require liborm85/composer-vendor-cleaner

2. 配置清理规则

插件安装完成后,你需要在项目的 composer.json 文件中添加 extra.dev-files 配置项,来定义你想要清理的文件和目录。这个配置项支持强大的Glob模式匹配,让你能够非常精细地控制清理范围。

以下是一个配置示例,展示了其灵活性:

{
    "require": {
        "liborm85/composer-vendor-cleaner": "^1.0"
    },
    "extra": {
        "dev-files": {
            "/": [                  // 匹配所有库包的根目录和bin目录
                "tests/",           // 移除所有测试目录
                "docs/",            // 移除所有文档目录
                ".travis.yml",      // 移除所有.travis.yml文件
                ".github/"          // 移除所有.github目录
            ],
            "*/*": [                // 匹配所有库包目录(不包括bin目录)
                "*.sh",             // 移除所有shell脚本文件
                "CONTRIBUTING.md"   // 移除贡献指南文件
            ],
            "twig/twig": [          // 仅匹配 twig/twig 包
                "doc/",             // 移除其doc目录
                "/drupal_test.sh"   // 移除其根目录下的drupal_test.sh文件
            ],
            "symfony/*": [          // 匹配所有symfony开头的包
                "Tests/"            // 移除其Tests目录
            ],
            "example/package": [    // 匹配 example/package 包
                "languages/*",      // 移除languages目录下的所有文件和目录
                "!languages/cs.php" // 但排除languages/cs.php文件
            ]
        }
    },
    "config": {
        "dev-files": {
            "match-case": true,         // 是否区分文件名大小写,默认为true
            "remove-empty-dirs": true,  // 是否移除清理后留下的空目录,默认为true
            "no-dev-only": false        // 如果设置为true,则只在运行`composer install --no-dev`时才进行清理
        }
    }
}

配置详解:

  • *键名("/", `"/","twig/twig","symfony/"` 等)**:这些是匹配目标路径的规则。
    • "/":表示匹配 vendor 目录下所有直接子目录(即所有第三方包的根目录)以及 bin 目录。
    • "*/*":表示匹配 vendor 目录下所有第三方包的根目录,但不包括 bin 目录。
    • "twig/twig":精确匹配 vendor/twig/twig 这个特定包。
    • "symfony/*":使用通配符匹配所有以 symfony/ 开头的包,例如 symfony/console、symfony/http-kernel 等。
  • 值(数组):数组中的每个字符串都是一个Glob模式,用于匹配要删除的文件或目录。
    • tests/:匹配名为 tests 的目录。
    • *.sh:匹配所有以 .sh 结尾的文件。
    • !languages/cs.php:感叹号 ! 表示排除规则,即 languages 目录下的所有内容都会被删除,除了 cs.php 文件。
  • config.dev-files:提供了一些额外的全局配置选项,可以进一步微调清理行为。
    • match-case: 是否区分文件名大小写,默认 true。
    • remove-empty-dirs: 清理后是否删除空目录,默认 true。
    • no-dev-only: 如果设置为 true,则只有当Composer命令带上 --no-dev 参数时(通常用于生产环境部署)才会执行清理。这非常有用,可以在开发环境中保留所有文件,而在生产环境自动清理。

你甚至可以将这些清理规则定义在一个独立的JSON文件中(例如 composer.dev-files.json),然后在 composer.json 中引用它:

{
    "extra": {
        "dev-files": "composer.dev-files.json"
    }
}

优势与实际应用效果

引入 liborm85/composer-vendor-cleaner 后,我的项目部署流程发生了质的飞跃:

  1. 显著减小部署包体积:清理掉几百兆甚至上G的无用文件后,部署包的大小可以减少一半甚至更多,极大地节省了存储空间和网络传输带宽。
  2. 加速部署时间:文件传输量的减少直接带来了部署时间的缩短,尤其是在网络条件不佳或需要频繁部署的环境下,效果非常明显。
  3. 更纯净的生产环境:生产服务器上不再有与生产无关的测试、文档等文件,减少了潜在的安全风险和混乱。
  4. 自动化与可靠性:一旦配置完成,清理过程完全自动化,无需人工干预,避免了手动清理可能带来的错误和遗漏。
  5. 高度可定制:灵活的Glob模式和排除规则,让我可以根据每个项目的具体需求,精确控制清理范围,确保不会误删任何必要文件。
  6. 与CI/CD无缝集成:在自动化部署流程中,这个插件能完美融入,成为部署流水线中不可或缺的一环。

如果你也曾被臃肿的 vendor 目录困扰,那么 liborm85/composer-vendor-cleaner 绝对值得一试。它不仅能让你的项目更轻盈,还能让你的部署工作变得前所未有的顺畅和高效。赶快尝试一下,让你的PHP项目焕发新生吧!

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

5617

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

344

2023.12.25

Composer 安装与快速入门指南
Composer 安装与快速入门指南

面向 PHP 开发新手,详细介绍 Composer 的下载安装方式(本地安装与全局安装)、国内镜像源(阿里云/腾讯云)加速配置、composer.json 与 composer.lock 文件的作用解析、require/install/update 等核心命令的使用方法,帮助开发者快速掌握 PHP 依赖管理的基本工作流。

563

2026.04.10

Composer 依赖管理与版本控制实战
Composer 依赖管理与版本控制实战

深入讲解 Composer 的依赖管理机制,涵盖语义化版本号规范、版本约束符(^、~、*、>=)的区别与最佳实践、composer.lock 在团队协作中的锁定策略、依赖冲突的排查与解决方法、require-dev 与生产依赖的分离管理、平台依赖检查(platform-check)等进阶内容,帮助开发者在项目中精准控制依赖版本、避免"依赖地狱"。

327

2026.04.10

Composer 自定义包开发与发布教程合集
Composer 自定义包开发与发布教程合集

以实际项目为导向,讲解如何从零创建一个符合规范的 Composer 包,涵盖 composer.json 元信息配置、PSR-4 自动加载规则设置、命名空间规划、单元测试集成、README 与 LICENSE 编写规范,以及将包提交到 Packagist 公共仓库或搭建 Satis/Private Packagist 私有仓库的完整发布流程,帮助开发者将可复用代码封装为标准化的 Composer 包。

369

2026.04.10

Composer 自动加载机制与性能优化
Composer 自动加载机制与性能优化

系统剖析 Composer 的自动加载体系,讲解 PSR-0 与 PSR-4 自动加载标准的区别与演进、classmap 与 files 加载方式的适用场景、autoload_real.php 源码级加载流程解析,同时介绍 composer dump-autoload -o 优化加载映射、APCu 缓存加速、authoritative-classmap 配置等生产环境性能优化手段,帮助开发者深入理解自动加载原理并提升项目启动速度。

300

2026.04.13

Composer 在主流 PHP 框架中的应用实践
Composer 在主流 PHP 框架中的应用实践

结合 Laravel、ThinkPHP、Symfony 等主流 PHP 框架的实际场景,讲解 Composer 在框架项目中的典型应用,包括通过 create-project 初始化框架项目、安装与管理第三方扩展包、scripts 钩子(post-install/post-update)自动执行部署任务、自定义 Installer 插件开发、多项目共享 vendor 依赖的 Monorepo 工作流管理,帮助开发者在真实框架项目中充分发

483

2026.04.13

Composer 镜像源配置与网络问题排查
Composer 镜像源配置与网络问题排查

针对国内开发者常遇到的 Composer 网络问题,详细讲解阿里云、腾讯云、华为云等国内镜像源的全局与项目级切换方法、多镜像源优先级配置策略、composer config 命令行快速设置技巧,同时涵盖 SSL 证书错误、连接超时、下载中断等常见网络报错的排查与修复方案,以及利用 artifact / path 仓库实现完全离线环境下的依赖安装。

271

2026.04.14

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn