答案:通过配置post-install-cmd脚本和使用--no-dev等部署选项可自动清理Composer依赖中的测试、文档等冗余文件。具体包括在composer.json中添加find命令删除tests、docs等目录,结合--prefer-dist和--optimize-autoloader优化安装,适用于Linux/macOS环境,Windows需适配命令,还可通过CI/CD流程构建精简部署包。

Composer 本身不会自动删除开发用文件(如测试代码、文档、示例等),但你可以通过配置和插件来实现安装后自动清理这些不必要的资源。
使用 composer-unused 或自定义脚本清理冗余文件
虽然没有内置选项直接删除 vendor 中的 tests、docs 等目录,但可以通过 post-install-cmd 脚本在安装完成后自动清除常见无用路径。
在 composer.json 中添加如下脚本:
"scripts": {
"post-install-cmd": [
"find vendor/*/* -type d \\( -name 'tests' -o -name 'Tests' -o -name 'test' -o -name 'doc' -o -name 'docs' -o -name 'example' -o -name 'examples' -o -name '.github' \\) -exec rm -rf {} + || true",
"find vendor/* -type d -name '.git' -exec rm -rf {} + || true"
]
}
说明:
- 该命令会查找 vendor 目录下所有包中的
tests、docs、examples等目录并删除。 -
|| true避免因某些目录不存在导致报错中断安装。 - 适用于 Linux/macOS 环境;Windows 需使用 PowerShell 或 Git Bash 执行类似逻辑。
使用 hirak/prestissimo 提升安装速度(可选)
虽然不直接清理文件,但并行下载能加快依赖获取。安装后仍需配合脚本清理:
小麦企业网站展示系统介绍:一、安装使用将xiaomai.sql导入数据库二、后台登录后台帐号,密码默认都是admin,config.php 配置文件可根据自行需要修改,IP地址,数据库用户名,密码,及表名后台目录默认admin,支持自行任意修改目录名三、注意事项1 本源码完全免费,采用伪静态,减少不必要的源码重复,速度更快,支持二次开发。2、注明本程序编码为UTF8,如发生乱码,请注意修改编码3、
composer global require hirak/prestissimo
生产环境建议:使用 --prefer-dist 和 --no-dev
部署时应确保使用以下命令减少开发内容:
composer install --no-dev --prefer-dist --optimize-autoloader
-
--no-dev:跳过 require-dev 中的包(如 phpunit、phpstan 等)。 -
--prefer-dist:优先使用压缩包而非源码克隆,通常不含完整历史记录。 -
--optimize-autoloader:优化类加载性能。
更高级方案:构建自定义部署包
若对体积敏感(如 Serverless 部署),建议在 CI/CD 流程中执行完整清理,并打包精简后的 vendor:
- 运行
composer install --no-dev。 - 执行 find 删除指定目录。
- 打包上传结果。
基本上就这些方法,结合脚本和部署策略可以有效去除大部分冗余文件。关键是根据项目实际需求选择合适的清理层级。









