composer如何使用缓存目录_composer环境变量COMPOSER_CACHE_DIR【笔记】

1次阅读

生效,但仅在 composer 未显式指定 –cache-dir 时起作用,优先级低于命令行参数、高于默认路径;需确保路径有读写权限并用绝对路径设置。

composer如何使用缓存目录_composer环境变量COMPOSER_CACHE_DIR【笔记】

COMPOSER_CACHE_DIR 环境变量是否生效?

生效,但仅在 Composer 未显式指定 --cache-dir 时起作用。它优先级低于命令行参数,高于默认路径(如 ~/.composer/cache)。如果执行 composer install --cache-dir /tmp/my-cacheCOMPOSER_CACHE_DIR 就会被忽略。

如何正确设置 COMPOSER_CACHE_DIR?

直接导出环境变量即可,无需修改 Composer 配置文件:

export COMPOSER_CACHE_DIR="/path/to/your/cache"

常见使用场景包括 CI/CD 中避免重复下载、docker 容器内挂载统一缓存目录、多项目共享缓存节省磁盘空间。注意路径需有读写权限,且建议使用绝对路径。

  • linux/macos:加到 ~/.bashrc/etc/environment 中长期生效
  • windows(CMD):set COMPOSER_CACHE_DIR=C:my-composer-cache
  • Windows(PowerShell):$env:COMPOSER_CACHE_DIR="C:my-composer-cache"
  • Docker 中推荐用 -e COMPOSER_CACHE_DIR=/cache -v $(pwd)/composer-cache:/cache

缓存目录结构和清理逻辑

Composer 缓存目录下包含 repo/(包元数据)、files/(下载的 zip/tar 包)、vcs/git 克隆副本)等子目录。执行 composer clear-cache 会清空整个 COMPOSER_CACHE_DIR 下内容,但不会影响 vendor/

注意:不同 Composer 版本缓存格式略有差异(如 v2 引入了更细粒度的 repo 索引),混用多个版本时可能触发自动重建,导致首次运行变慢。

为什么设置了 COMPOSER_CACHE_DIR 却没看到缓存增长?

常见原因有三个:

  • 项目根目录存在 composer.json 但尚未运行过 composer installcomposer update
  • 所有依赖都命中了已安装的 vendor/,且无新包需要下载(可加 -v 查看详细日志,搜索 DownloadingCache hit
  • 权限问题:Composer 启动用户无法写入指定缓存路径,此时会静默 fallback 到默认路径(可通过 composer config --global cache-dir 查看实际生效路径)

最稳妥的验证方式是删掉 vendor/composer.lock,再运行 composer install -v,观察日志中缓存路径是否为你设定的值。

text=ZqhQzanResources