vendor 是 Composer 默认依赖目录,位于项目根目录,由 composer.json 中 config.vendor-dir 硬编码指定;它是项目私有依赖区,autoload.php 为自动加载入口,vendor/composer/ 下文件自动生成,不可手动修改;可删 vendor 整目录,但不可删 autoload.php。

vendor 目录是 Composer install 下载并安装所有依赖包的默认位置,它就在项目根目录下,不是全局路径,也不是临时缓存目录。
为什么默认在 vendor 而不是其他地方?
Composer 遵循 PSR-4 和 PHP 的自动加载约定,vendor 是硬编码在 composer.json 的 config.vendor-dir 默认值里(未显式配置时即为 vendor)。它被设计成项目私有依赖区,避免污染全局环境或用户主目录。
-
vendor/autoload.php是自动加载入口,所有包的类都靠它注册到 PHP 的 autoloader 中 -
vendor/composer/存放自动生成的映射文件(如autoload_classmap.php、autoload_psr4.php),不建议手动修改 - 每个包以
vendor/{vendor-name}/{package-name}/形式存放,例如vendor/monolog/monolog/ -
vendor/bin/会软链接(或复制)可执行脚本(如phpunit、laravel),前提是包在composer.json中声明了bin字段
vendor 里哪些文件能删、哪些不能动?
运行 composer install 后,vendor 是完整可运行的依赖快照。但实际维护中常有人误删导致报错:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- ✅ 可安全删除:
vendor/整个目录(下次composer install会重建) - ❌ 绝对不要删:
vendor/autoload.php—— 删除后require 'vendor/autoload.php'会直接 fatal error - ⚠️ 慎删:
vendor/composer/autoload_*.php—— 它们由composer dump-autoload生成,删了会导致类找不到,但可重建 - ⚠️ 不要手动改:
vendor/{vendor}/{package}/composer.json—— 这是包自身的元信息,修改后下次 update 可能被覆盖
如何把 vendor 改到别的路径?
用 config.vendor-dir 可重定向,但需注意副作用:
- 在项目根目录的
composer.json中添加:"config": { "vendor-dir": "lib/vendor" } - 改完后必须重新运行
composer install,旧vendor不会自动迁移 -
autoload.php路径变了,所有require或include语句都要同步更新 - 某些 IDE 或 CI 工具(如 PHPStan、GitHub Actions 的 cache 步骤)可能默认只认
vendor,需额外配置路径
真正容易被忽略的是:即使你设置了 vendor-dir,Composer 的全局缓存(~/.composer/cache)仍独立存在,它不影响 vendor 结构,但决定下载速度和离线可用性 —— 这个缓存目录从不参与自动加载,也不该被项目提交或部署。

















