可通过 composer.json 的 config.vendor-dir 直接修改 vendor 目录名,如设为 "libs";需手动删除旧目录后执行 install/update;仅项目级生效,全局配置无效;IDE、CI、.gitignore 及 autoload 映射等需同步更新。

可以直接通过 composer.json 的 config.vendor-dir 配置项修改 vendor 目录名称,无需额外插件或环境变量干预。
在 composer.json 中设置 vendor-dir
这是最直接、最推荐的方式。Composer 会读取该配置并据此创建和定位依赖目录。
- 确保
composer.json根节点下有config对象,且其中包含vendor-dir字段 - 路径值支持相对路径(相对于
composer.json所在目录),不支持绝对路径或环境变量占位符(如$HOME) - 若项目已存在
vendor目录,修改后需先手动删除旧目录,再运行composer install或composer update
{
"config": {
"vendor-dir": "libs"
}
}
全局配置 vs 项目级配置
vendor-dir 只在项目级 composer.json 中生效;全局配置(~/.composer/config.json)中设置该字段会被忽略。
- 执行
composer config --global config.vendor-dir libs不会起作用 - 全局配置仅影响
home、cache-dir、bin-dir等少数字段 - 多项目共用同一 vendor 名称?只能逐个项目配置,或借助脚本批量写入
修改后要注意的兼容性问题
自定义 vendor-dir 会影响所有依赖自动加载和工具链行为,必须同步调整外部引用。
- PHP 自动加载器(如
autoload.php)仍会从新目录加载,无需改动 - 但 IDE(如 PhpStorm)、静态分析工具(如 PHPStan)、CI 脚本中硬编码的
vendor/路径需同步更新 - 某些包的安装脚本或 post-install-cmd 若显式引用
vendor/autoload.php,也需适配新路径 - Git 忽略规则(
.gitignore)中的/vendor行应改为对应的新目录名,否则可能误提交
真正容易被忽略的是:Composer 命令本身(如 composer dump-autoload)不会报错,但如果你的 autoload 规则里写了 files 或 psr-4 映射到旧 vendor 下的路径,那些文件就再也加载不到了——这问题往往要等到运行时报 Class not found 才暴露。










