composer缓存目录默认在linux/macos为~/.composer/cache、windows为%appdata%\composer\cache;vendor/是依赖安装目录,与缓存目录cache-dir完全分离,缓存存zip包和元数据,不参与运行时加载,故不可通过改vendor来调整缓存位置。

Composer缓存目录默认在哪?为什么不能直接改 vendor/
Composer 的缓存(cache-dir)和依赖安装目录(vendor/)是两回事。缓存存的是下载的 ZIP 包、解压后的包快照、composer.lock 哈希校验等,不参与运行时加载;而 vendor/ 是项目级依赖代码存放地,由 install 或 update 命令写入,不能通过全局缓存配置迁移。想腾出系统盘空间,只动缓存目录就足够,也最安全。
默认位置取决于系统:
- Linux/macOS:
~/.composer/cache - Windows:
%APPDATA%\Composer\cache(通常是C:\Users\<username>\AppData\Roaming\Composer\cache</username>)
用 COMPOSER_CACHE_DIR 环境变量强制重定向缓存
这是最直接、优先级最高、且无需修改全局配置文件的方式。只要环境变量生效,所有 Composer 命令(包括全局 global require)都会走新路径。
实操建议:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- Linux/macOS:在
~/.bashrc或~/.zshrc末尾加一行:export COMPOSER_CACHE_DIR="/mnt/bigdisk/composer-cache"
,然后执行source ~/.zshrc - Windows(命令行):
setx COMPOSER_CACHE_DIR "D:\composer-cache"(需重启终端) - Windows(PowerShell):
[Environment]::SetEnvironmentVariable("COMPOSER_CACHE_DIR", "D:\composer-cache", "User") - 务必确保目标路径存在且当前用户有读写权限,否则 Composer 会静默失败或回退到默认路径
验证是否生效:看 composer config --global cache-dir 和实际行为
composer config --global cache-dir 显示的是全局配置文件(~/.composer/config.json)里写的值,但它会被 COMPOSER_CACHE_DIR 环境变量覆盖——所以即使这里没变,也不代表没生效。
真正验证方法:
- 运行
composer clear-cache,观察输出中 “Clearing cache contents…” 后面的路径是不是你的新目录 - 执行一次
composer require monolog/monolog,然后检查新路径下是否出现repo/、files/、archived/子目录 - 注意:首次切换后,旧缓存不会自动迁移,但无害——新路径会从零开始积累,旧目录可手动删除
不推荐用 composer config --global cache-dir 改路径的原因
这个命令会把路径写进 ~/.composer/config.json,看似一劳永逸,但有隐患:
- 如果路径含空格或特殊字符(如
D:\My Projects\composer-cache),某些 Composer 版本会解析失败,报错file_put_contents(): Filename cannot be empty - 多用户共享机器时,该配置是用户级的,不如环境变量灵活可控
- CI/CD 环境(如 GitHub Actions)通常靠环境变量注入路径,保持本地与流水线一致更可靠
- 一旦配错导致 Composer 卡死,删掉
config.json里的cache-dir字段比清理坏的环境变量更快
缓存路径本身不涉及加密或敏感信息,但硬编码进 JSON 容易被 git 误提交、被 IDE 自动格式化破坏结构——环境变量绕开了这些干扰。










