Composer 不支持跳过 vendor 直接下载 ZIP;需通过 Packagist 找源码仓库,再用 GitHub/GitLab 的 Download ZIP 链接获取,或用 composer archive 打包当前项目(非单个依赖)。

composer install 时怎么跳过 vendor 目录,直接拿到源码 ZIP
Composer 本身不提供「下载 ZIP 包」的命令——它压根不是干这个的。composer install 或 composer update 的目标永远是构建可运行的 vendor/ 目录,不是打包分发。想拿 ZIP,得绕开 Composer 的安装流程,去源头找。
从 packagist.org 找到包的真实 ZIP 下载地址
Packagist 上每个包页面(比如 monolog/monolog)右上角有「Source」链接,点进去会跳转到 GitHub/GitLab 等仓库页;那里有「Code → Download ZIP」按钮——这才是你要的 ZIP。
但手动点太慢?可以拼接 URL:
- GitHub 包:
https://github.com/{user}/{repo}/archive/refs/tags/{tag}.zip(如v2.10.0) - GitLab 包:
https://gitlab.com/{group}/{project}/-/archive/{tag}/{project}-{tag}.zip - 没 tag?用
main或master分支名代替
注意:这跟 Composer 的 dist 配置无关,也绕过了 composer.json 里写的 dist.url——那个字段只在 composer install 内部用,不对外暴露。
用 composer archive 命令生成 ZIP(但仅限当前项目)
composer archive 是唯一官方支持的「打包」命令,但它只打包你本地的整个项目(含 vendor/),不是单个依赖包。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
常见误用场景:
- 想用它下载
guzzlehttp/guzzle的 ZIP?不行,它不接受包名参数 - 执行前必须有完整的
composer.json和已安装的vendor/ - 默认打 zip,可用
--format=zip|tar|tar.gz指定 - 生成文件名含版本号,但不会自动加 .zip 后缀(得自己确认)
示例:composer archive --format=zip --dir=./dist/ → 输出 myproject-1.0.0.zip
为什么不要依赖 composer config --global repo.packagist.org … 这类骚操作
有人试过改全局配置,把 Packagist 换成自建镜像或 mock 服务,企图劫持 dist 下载链接——理论上可行,但实际踩坑极多:
- Composer v2+ 强制校验 dist 文件的
sha256,伪造 URL 很容易校验失败 - 私有包可能用
artifact仓库,但 public 包基本都走 GitHub/GitLab,你没法替换成自己的 ZIP 地址 - 一旦配置出错,
composer install会卡在「Resolving packages…」不动,错误信息只显示Could not parse version constraint,根本看不出是 repo 配置问题
真要批量下源码,老老实实用 curl + jq + GitHub API 脚本更稳。
最常被忽略的一点:ZIP 包里没有 vendor/,也没有 autoload.php,解压后不能直接 require——它只是源码快照,不是可运行产物。










