composer缓存目录默认为~/.composer/cache(linux/macos)或%appdata%\composer\cache(windows),可通过composer config --global cache-dir查看或修改;环境变量composer_cache_dir优先级最高,但需确保路径存在且有读写权限,改后旧缓存不自动迁移。

Composer 没有“下载路径”这个概念——它只把包解压安装到 vendor,把原始压缩包和元数据缓存到独立的 cache 目录。你想改的其实是这两个位置,但它们的修改逻辑、生效条件和副作用完全不同。
vendor 目录在哪?怎么改才真正生效
默认固定为项目根目录下的 vendor,不能通过命令行临时指定。改它必须提前配置,且必须清空旧目录重装。
- 在项目
composer.json的config段里加:"vendor-dir": "lib"(只能是相对路径,不能写D:/xxx或/opt/vendor) - 删掉现有
vendor目录,再运行composer install——composer update不会移动已有包 - 改完后,
autoload.php路径变成lib/autoload.php,所有硬编码require 'vendor/autoload.php'的地方都得同步改 - IDE(如 PhpStorm)可能仍索引旧
vendor,需手动刷新或重新指定库路径
cache 目录在哪?改了为什么有时不生效
默认是 ~/.composer/cache(Linux/macOS)或 %APPDATA%\Composer\Cache(Windows),但它的实际值由三者竞争决定:全局 config > 环境变量 > 默认值。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 查当前生效路径:
composer config --global cache-dir - 设新路径(推荐):
composer config --global cache-dir /data/composer-cache,路径必须存在且当前用户可读写 - 用环境变量(仅 Composer 2.2+ 支持):
COMPOSER_CACHE_DIR=/tmp/composer-cache,但会被全局 config 覆盖 - 缓存不自动迁移,旧缓存不会被复用;权限不对时 Composer 会静默回退到默认路径,不报错
想把某个包单独装到指定目录?别硬改 vendor-dir
直接改 vendor-dir 是全局挪动,而单包路径需要插件机制,否则配置无效。
- 先装插件:
composer require composer/installers - 在
composer.json的extra段加:"installer-paths": {"web/core": ["drupal/core"]} - 该规则只对声明了特定
type(如drupal-module)的包生效;普通library类型需包自身也配兼容 type - 路径必须相对于项目根目录,不支持绝对路径;
{$name}占位符可用,但别漏掉引号
最常被忽略的一点:改 vendor-dir 后,vendor/bin 下的软链接会断——如果你还依赖 phpunit 或 laravel 这类全局工具,记得同步配 "bin-dir": "lib/bin",否则命令找不到入口。










