真正实现“只下载不安装”的命令是 composer update --no-install --prefer-dist,它将依赖包下载至 ~/.composer/cache/files/ 而不写入 vendor/、不生成 autoload 文件、不修改 lock 文件或执行脚本。

composer download只下载不安装,用 --no-install
Composer 本身没有“纯下载”模式,但 composer install --no-install 并不存在——这是常见误解。真正能跳过安装步骤、只拉取包文件的,是 composer install --dry-run(模拟执行)或更准确的:composer update --no-install 配合缓存机制。
实际场景中,“只下载不安装”通常指:把所有依赖包提前下到本地缓存,不写入 vendor/、不生成自动加载器、不修改项目文件。这在 CI 构建前预热缓存、离线环境准备、或调试网络问题时很有用。
-
composer update --no-install会解析依赖、下载 dist 包(.zip/.tar.gz)到~/.composer/cache/files/,但跳过解压和写入vendor/ - 必须搭配
--prefer-dist(默认开启),否则 source 模式仍会触发 Git 克隆,而克隆行为无法被--no-install跳过 - 该命令不会生成或更新
composer.lock,也不会运行任何脚本(如post-update-cmd) - 验证是否成功:检查
~/.composer/cache/files/下对应包的哈希目录是否存在完整 .zip 文件,而非看vendor/是否为空
为什么 composer install --download-only 不行
很多人搜 composer install --download-only,但这个 flag 从没存在过——Composer 官方从未实现它。2.x 版本里最接近的是 --no-scripts 和 --no-autoloader,但它们仍会解压、写入 vendor/、生成类映射。
错误尝试示例:composer install --no-scripts --no-autoloader 看似“轻量”,实则只是跳过脚本和 autoload.php 生成,vendor/ 目录照常被创建并填充文件,不符合“只下载”的定义。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 真正想隔离下载动作,只能靠
composer update --no-install+ 显式指定--with-dependencies(避免只处理 root 包) - 如果项目已有
composer.lock,用composer install --no-scripts --no-plugins依然会安装,不是下载 - 别依赖第三方插件(如
hirak/prestissimo)来“加速下载”——它改的是并发机制,不改变安装行为
离线环境下提前下载依赖的实操路径
在无外网的生产服务器上部署前,需要把所有包提前下好。这不是简单复制 vendor/,而是复用 Composer 缓存机制,确保 checksum 校验通过、结构一致。
- 在有网机器上运行:
composer update --no-install --prefer-dist --no-progress,等全部完成 - 打包整个
~/.composer/cache/目录(重点是files/和repo/子目录),拷贝到目标机器同位置 - 目标机上设置
COMPOSER_CACHE_DIR环境变量指向该路径,再运行composer install——它会直接从缓存解压,不走网络 - 注意:PHP 版本、扩展(openssl/zip)必须一致,否则缓存中的 dist 包可能因校验失败被丢弃重下
容易忽略的缓存校验与版本兼容性
缓存不是万能保险。Composer 2.2+ 对 dist 包增加了更强的完整性校验,若你手动替换 cache/files/ 中的 zip 文件,或跨平台复制(Windows → Linux),可能触发 Hash mismatch 错误。
- 不要手动编辑或替换缓存目录里的文件;要用
composer update --no-install生成 - 不同 Composer 版本生成的缓存结构略有差异,建议源机和目标机使用相同 minor 版本(如都是 2.5.x)
-
composer clear-cache后再运行--no-install,可排除旧缓存干扰,尤其当你反复测试时
真正“只下载”的动作,始终绑定在 update 流程里,且依赖缓存路径的可见性和一致性。把它当成一次带校验的预加载,而不是一个开关式的选项。

















