composer 2.0+ 中 config.vendor-dir 已彻底废弃,设了会触发弃用警告且被忽略;唯一可靠方式是设置环境变量 composer_vendor_dir,它全命令生效、优先级最高,需同步更新 autoload 引用及工具链路径。

composer config vendor-dir 已失效,运行后会触发警告且不生效;当前唯一可靠方式是设置环境变量 COMPOSER_VENDOR_DIR。
composer config vendor-dir 为什么不起作用
自 Composer 2.0 起,config.vendor-dir 已被彻底废弃。执行 composer config vendor-dir libs 会写入 composer.json,但后续所有命令(install、update、dump-autoload)都会忽略它,并输出警告:
The "config.vendor-dir" option is deprecated, use the "COMPOSER_VENDOR_DIR" environment variable instead.
- 该配置不再参与路径解析,只是残留的 JSON 字段
- 即使
composer.json里存在"vendor-dir": "libs",composer install仍会把包装进默认vendor/ -
composer config --global vendor-dir同样无效,全局配置也不再读取该字段
正确改 vendor 路径:用 COMPOSER_VENDOR_DIR 环境变量
这是 Composer 2.2+ 唯一被全命令支持、且优先级最高的方式。它影响 install、update、require、dump-autoload、run-script 等全部命令。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS 临时使用:
COMPOSER_VENDOR_DIR=third-party composer install - Windows CMD:
set COMPOSER_VENDOR_DIR=third-party && composer install - PowerShell:
$env:COMPOSER_VENDOR_DIR="third-party"; composer install - 永久生效:将
COMPOSER_VENDOR_DIR=third-party加入~/.zshrc(macOS/Linux)或系统环境变量(Windows),重启终端/IDE - 路径支持相对路径(如
third-party)和绝对路径(如/var/www/myapp/libs)
改完路径后必须重装依赖,不能只 dump-autoload
COMPOSER_VENDOR_DIR 只决定安装目标,但不会自动迁移已有文件或更新自动加载器。旧 vendor/autoload.php 仍硬编码着原路径,直接运行 dump-autoload 无效。
- 必须先手动删除整个旧
vendor/目录(哪怕已重命名) - 再运行
COMPOSER_VENDOR_DIR=third-party composer install - 新生成的
third-party/autoload.php才会包含正确的 PSR-4 映射和 classmap 路径 - 如果项目中硬编码了
vendor/autoload.php(如在index.php中 require),需同步改为third-party/autoload.php
CI/CD 和 IDE 需要额外注意
环境变量生效依赖运行时上下文,容易在自动化流程中遗漏。
- GitHub Actions / GitLab CI 中,必须显式在 job step 里设
env: { COMPOSER_VENDOR_DIR: third-party },不能只靠composer.json或 shell 配置 - PHPStorm 会缓存 autoload 映射,改路径后需 File → Reload project from Disk 或重启索引,否则代码补全和跳转会失败
- 某些部署脚本若用
find . -name "autoload.php"定位,需同步更新逻辑,避免漏掉新路径
最易被忽略的一点:改路径不是“换个目录名”就完事——它牵动自动加载、IDE 索引、部署脚本、甚至 CI 缓存策略。环境变量必须在每个需要 Composer 的环节都显式注入,而不是设一次就全局生效。










