0

0

如何配置Composer在安装包后自动清理不必要的文件?(例如测试文件)

穿越時空

穿越時空

发布时间:2025-12-15 13:05:02

|

481人浏览过

|

来源于php中文网

原创

Composer不内置自动删除测试文件功能,但可通过--no-dev选项跳过开发依赖、使用eloquent/composer-cleaner插件配置排除路径、自定义post-autoload-dump脚本或CI/CD中find命令清理vendor内tests等冗余目录来实现。

如何配置composer在安装包后自动清理不必要的文件?(例如测试文件)

Composer 本身不提供“安装后自动删除测试文件”的内置功能,但可以通过组合使用 composer install 的选项、自定义脚本和第三方插件来实现类似效果。核心思路是:在包安装完成后,主动移除不需要的目录(如 tests/examples/docs/ 等),同时确保不影响运行时依赖。

使用 composer install --no-dev 减少非生产文件

这是最基础也最有效的一步。开发依赖(包括测试框架、工具类库)及其相关文件(如 phpunit 的配置、测试用例)默认不会被安装到生产环境:

  • --no-dev 会跳过 require-dev 中声明的包,自然也就不会下载它们附带的测试/文档等资源
  • 配合 "minimum-stability": "stable""prefer-stable": true 可进一步避免不稳定版本中混入调试用内容
  • 注意:这不会清理已安装包内部自带的 tests/ 目录(比如 monolog/monolog 自身的 tests/ 文件夹仍会存在)

启用 extra > composer-cleaner 插件(推荐)

社区主流方案是使用 bamarni/composer-bin-plugin 或更直接的 maglnet/ComposerRequireChecker?不对——真正专注“清理包内冗余文件”的是:ergebnis/composer-normalize 不干这事;正确答案是:johnstevenson/composer-cleanup 或更活跃维护的:symfony/flex(仅限 Symfony 项目)?其实最通用的是:

eloquent/composer-cleaner —— 它允许你在 composer.json 中声明要从所有已安装包中删除的路径模式:

  • 安装插件:composer require --dev eloquent/composer-cleaner
  • composer.jsonextra 段添加规则:
"extra": {
  "cleaner": {
    "exclude": [
      "/tests/",
      "/Tests/",
      "/test/",
      "/Test/",
      "/examples/",
      "/docs/",
      "/documentation/",
      "/.github/",
      "/.git/",
      "/CHANGELOG.md",
      "/README.md",
      "/LICENSE"
    ]
  }
}

下次执行 composer installcomposer update 后,插件会自动扫描 vendor/ 下每个包,匹配并删除符合规则的文件与目录。

自定义 post-autoload-dump 脚本(轻量可控)

如果你倾向零依赖、完全自主控制,可在 composer.json 中注册一个清理脚本,在自动加载生成后执行:

塔猫ChatPPT
塔猫ChatPPT

塔猫官网提供AI一键生成 PPT的智能工具,帮助您快速制作出专业的PPT。塔猫ChatPPT让您的PPT制作更加简单高效。

下载
  • 添加脚本定义:
"scripts": {
  "post-autoload-dump": [
    "rm -rf vendor/*/tests vendor/*/Tests vendor/*/test vendor/*/Test vendor/*/examples vendor/*/docs vendor/*/documentation vendor/*/.github vendor/*/.git"
  ]
}

⚠️ 注意事项:

  • 该命令仅在 Linux/macOS 下生效;Windows 用户需改用 PowerShell 或借助 robloach/component-installer 类工具
  • 建议先加 echo "Cleaning vendor..." 并用 find vendor -name tests -type d | head -5 预览,避免误删
  • 若某些包的 tests/ 是运行时必需的(极少见,如部分代码生成器),请从排除列表中移除对应路径

构建阶段统一清理(CI/CD 场景)

在 Docker 构建或部署脚本中,不依赖 Composer 插件,而是用系统命令集中处理:

  • Dockerfile 示例片段:
RUN composer install --no-dev --optimize-autoloader && \
    find vendor/ -name 'tests' -type d -prune -exec rm -rf {} + && \
    find vendor/ -name 'Examples' -type d -prune -exec rm -rf {} + && \
    find vendor/ -name '.git' -type d -prune -exec rm -rf {} +

这样既干净又可审计,适合对安全性、体积敏感的生产镜像。

基本上就这些。不需要复杂配置,关键在于明确目标:不是阻止 Composer 下载,而是安装后精准剔除。选插件省心,写脚本透明,进容器彻底——按项目实际选一种即可。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

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

78

2025.09.11

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

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

150

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

417

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

310

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

466

2023.11.27

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

358

2023.06.14

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

2

2026.01.23

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号