config.vendor-dir仅在vendor不存在时生效;必须删除vendor和composer.lock后重新install,且需同步更新autoload.php引用、bin路径及IDE索引。

Composer 的 vendor 目录不能在安装后动态改路径,config.vendor-dir 只对首次 composer install 有效;想换路径,必须清空 vendor + composer.lock 后重装。
vendor-dir 配置只在 vendor 不存在时起作用
你写进 composer.json 的 "config": {"vendor-dir": "libs"} 不会移动已有包,也不会让下次 composer update 写到新位置。它只在以下两种情况生效:
-
vendor目录完全不存在时执行composer install -
vendor和composer.lock都被删掉后重新运行composer install
如果已经装过包,直接改配置再 update,所有依赖仍会留在原 vendor/ 下,新配置形同虚设。
改了 vendor-dir 后,autoload.php 和 bin 文件路径全得手动同步
vendor-dir 改成 third-party 后,这些地方立刻失效:
-
require 'vendor/autoload.php'→ 得改成require 'third-party/autoload.php' -
vendor/bin/phpunit→ 变成third-party/bin/phpunit,但 IDE 或脚本里硬编码的调用会报command not found - PHPStorm 默认只索引
vendor/,需手动在Settings → PHP → Include Paths中添加新路径
别指望 Composer 自动重写 require 或更新 PATH —— 它不干这事。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
全局包路径和项目 vendor 路径是两回事,别混用
想改的是项目依赖存放位置(即 vendor/),不是全局命令的安装地。这两者完全独立:
- 项目级
vendor-dir:只影响当前项目的vendor/名字和位置 - 全局包路径由
COMPOSER_HOME控制,默认是~/.composer/vendor,改它要用composer config --global home /path或设环境变量COMPOSER_HOME -
COMPOSER_VENDOR_DIR环境变量对全局安装无效,它只在项目中配合composer.json生效
最常踩的坑,就是设了 COMPOSER_VENDOR_DIR 环境变量,然后以为 composer global require 也会走这个路径 —— 它不会。
缓存路径和 vendor 路径无关,但配错会导致重复下载
缓存路径(cache-dir)控制的是 zip 包、元数据等临时文件存哪,不影响最终 vendor/ 结构。但它若配错,现象很隐蔽:
-
composer config -g cache-files-dir输出为空或指向临时目录 → 缓存根本没启用 - Docker 或 CI 中没透传
COMPOSER_CACHE_DIR环境变量 → 每次都重下包 - 路径没写绝对路径(比如用了
~/cache)→ Composer 静默 fallback 到默认路径
验证是否真生效:清缓存后跑一次 composer install,立刻检查你设的 cache-files-dir 下有没有生成 files/ 子目录和哈希命名的 zip 包。
真正要换 vendor 路径,核心就三步:删 vendor、删 composer.lock、改 composer.json 里的 vendor-dir、再 install。少一步,路径就还是老样子。

















