Composer 创建 Symfony 项目时应使用 --no-dev --prefer-dist --remove-vcs --no-interaction 参数初始化,并配合 composer-archive-excludes 插件排除 tests/、docs/ 等路径,再启用权威类映射优化 autoloader。

用 Composer 创建 Symfony 项目后,vendor 目录常因附带测试、文档、Git 历史等冗余内容而体积膨胀。真正有效的清理不是事后删文件,而是从初始化和安装阶段就控制输入源——既安全又省力。
创建时就收紧依赖和资源
别直接 composer create-project symfony/skeleton,默认会拉取全量 dev 依赖和源码级资源(如 .git、tests/)。应立刻加关键参数:
-
--no-dev:跳过 phpunit、phpstan 等开发工具,节省数百 MB -
--prefer-dist:强制下载精简 ZIP 包,而非完整 Git 仓库 -
--remove-vcs:安装时自动清除每个包内的 .git 目录(部分 dist 包仍残留) -
--no-interaction:避免交互式提问,适合 CI 或脚本化部署
启用归档排除规则,解压即过滤
仅靠 --remove-vcs 不够,很多包的 tests/、docs/、examples/ 仍会落地。推荐使用社区插件 composer-archive-excludes:
- 运行
composer require --dev composer-archive-excludes - 在
composer.json的"config"下添加:
此后每次 install 或 update,这些路径在 ZIP 解压时就被跳过,不写入 vendor。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
重建 autoload 映射,让“瘦身”真正生效
删了文件不代表 autoload 就不扫描——若未启用权威类映射,PHP 仍可能遍历整个 vendor 目录找类,导致性能下降甚至报错。
- 确保
composer.json中有:"config": {"optimize-autoloader": true} - 运行:
composer dump-autoload --optimize --classmap-authoritative --no-dev - 再执行:
composer install --no-dev --optimize-autoloader --classmap-authoritative
这会让 autoloader 完全依赖 vendor/composer/autoload_classmap.php,彻底绕过文件系统扫描。
验证并持续维护
清理不是一劳永逸。建议定期检查:
- 用
composer show --tree查看实际加载的依赖树,确认无意外嵌套 - 运行
composer depends vendor/package确认某包是否真被其他组件间接依赖 - 缓存过大时,用
composer clear-cache清理本地 repo/files/vcs;超 1.5GB 再动手
不复杂但容易忽略

















