项目级缓存目录唯一正解是composer config --local cache-dir,它将配置写入项目composer.json的config段,仅对当前项目生效,路径需手动创建并确保读写权限。

项目级缓存目录怎么设?composer config --local cache-dir 是唯一正解
全局缓存(~/.composer/cache)被多个项目共享,容易互相干扰——比如 A 项目更新了某个包的 dev-main 分支,B 项目 composer install 时可能意外复用旧快照。要彻底隔离,必须用项目级配置。
composer config --local cache-dir 写入的是项目根目录下的 composer.json 里 "config" 段,只对当前项目生效,不污染全局。它比环境变量更可控,也比改 COMPOSER_CACHE_DIR 更安全(后者一旦设错,所有项目都中招)。
- 执行
composer config --local cache-dir ./cache(路径必须是相对或绝对路径,./cache会生成在项目根目录下) - 确认写入:打开
composer.json,检查是否有"config": { "cache-dir": "./cache" } - 删掉
vendor和composer.lock,再跑composer install,观察./cache下是否生成archived/和repo/子目录 - 注意:
--local不会自动创建目录,得自己mkdir -p ./cache并确保当前用户有读写权限
COMPOSER_CACHE_DIR 在项目里临时生效?别信 shell alias 或 .env
很多人想用 .env 文件或 shell alias 给单个项目“注入”缓存路径,但 Composer 启动时不读 .env,alias 又容易漏掉子命令(比如 composer update 调用的内部进程不会继承 alias 环境)。真正可靠的方式只有两种:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在项目根目录下执行
COMPOSER_CACHE_DIR=$(pwd)/cache composer install—— 注意$(pwd)必须展开为绝对路径,./cache会失效 - 写个 wrapper 脚本(如
bin/composer),开头加export COMPOSER_CACHE_DIR="$(cd "$(dirname "$0")/.."; pwd)/cache",然后chmod +x bin/composer,后续全用bin/composer install - CI/CD 中推荐直接在 job 步骤里用
env:显式注入(GitHub Actions)或-e COMPOSER_CACHE_DIR=...(Docker) - 别用
export COMPOSER_CACHE_DIR=...放进.bashrc或.zshrc—— 这是全局污染,违背“项目专属”初衷
镜像源和缓存是两回事,repo.packagist.org.url 必须单独配
设了项目专属缓存目录 ≠ 自动加速下载。如果还连着官方源,第一次安装照样慢;缓存只跳过已下载包的解压和拷贝,不跳过 HTTP 请求。
- 项目级镜像配置:运行
composer config --local repo.packagist.org.url https://mirrors.aliyun.com/composer/ - 验证是否生效:执行
composer diagnose,看输出里Repo packagist.org: https://mirrors.aliyun.com/composer/是否出现 - 注意:国内镜像(阿里、腾讯、华为)大多不支持
dev分支元数据实时同步,如果你依赖大量"dev-master",建议保留packagist.org作为 fallback,用composer config --local repos.packagist composer https://packagist.org+repos.mirror composer https://mirrors.aliyun.com/composer/手动切源 - 镜像地址写错(比如少个
/或协议用http)会导致 Composer 静默退回到官方源,composer install -v的日志里会看到Downloading https://packagist.org/packages.json—— 这时候缓存再快也没用
为什么 composer clear-cache 不清项目级缓存?
这个命令只清全局缓存(~/.composer/cache),对项目级 cache-dir 或 COMPOSER_CACHE_DIR 无效。很多人清完以为万事大吉,结果下次 install 还是从旧缓存读,甚至因缓存损坏导致安装失败。
- 项目级缓存清理:手动
rm -rf ./cache(或你设的路径),再mkdir ./cache - 如果用了
COMPOSER_CACHE_DIR临时路径,清理就是rm -rf $COMPOSER_CACHE_DIR - 验证是否真清干净:运行
composer install --no-cache,此时应强制重下所有包(哪怕之前装过),说明缓存已失效 - CI 场景下建议在 job 开头加
rm -rf $(pwd)/cache,避免缓存残留引发不可复现问题
./cache 在 composer install 时会被解析为当前工作目录的相对路径,但某些 CI runner 或 Docker 容器里,工作目录可能不是项目根目录;Windows 上反斜杠和空格处理更敏感。动手前先 ls -ld 或 dir 确认路径存在且可写,比事后 debug 快十倍。

















