composer archive 不包含依赖,需先运行 composer install 安装依赖,再用系统命令如 zip 打包整个项目目录,或通过脚本合并 vendor 目录,推荐结合 .gitattributes 过滤无关文件后使用压缩工具生成完整发布包。

Composer 的 archive 命令本身只能打包当前项目(即你执行命令的这个包),不会自动包含项目的依赖项。 所以直接运行:
composer archive --format=zip
只会将你当前项目的源码打包成一个 zip 文件,不包括 vendor 目录里的依赖库。
如果你的目标是:将项目 + 所有依赖(vendor)一起打包成一个 zip 文件,你需要使用其他方式来实现。以下是几种实用方法:
1. 先安装依赖,再手动打包整个项目目录
最常见且可靠的方式是:
-
确保已安装所有依赖:
composer install --no-dev
(加
--no-dev可排除开发依赖,适合生产环境打包) -
使用系统命令将整个项目(含 vendor)压缩为 zip:
zip -r project-with-dependencies.zip . -x "*/\.*" -x "__pycache__/*"
或在 Windows 上可用 PowerShell:
Compress-Archive -Path "." -DestinationPath "project-with-dependencies.zip"
这样生成的 zip 就包含了代码和所有 Composer 安装的依赖。
2. 使用 Composer 的 "archive" + 后续脚本组合
虽然 `composer archive` 不打包依赖,但你可以先用它打包项目,然后手动把 vendor 加进去,例如写个脚本:
# 生成项目本身的 zip composer archive --format=zip --file=project.zip # 解压它(准备合并) unzip project.zip -d temp-build # 复制 vendor 目录进去 cp -r vendor temp-build/ # 重新打包 cd temp-build && zip -r ../final-project.zip . cd .. && rm -rf temp-build
最终得到的 final-project.zip 就包含项目和依赖。
3. 推荐:用 Composer dumpautoload + 构建完整发布包
如果你是要部署一个可运行的 PHP 应用(如 CLI 工具或小型 Web 服务),还可以考虑:
- 使用
composer install --optimize-autoloader --classmap-authoritative - 然后配合
.gitattributes文件控制哪些文件参与 archive
创建 .gitattributes 文件:
/build export-ignore /node_modules export-ignore /tests export-ignore
这样 composer archive 就不会包含被忽略的目录。
总结
composer archive --format=zip 只打包当前项目源码,不含依赖。要打包“项目 + 所有依赖”,应:
- 运行
composer install安装依赖 - 使用系统压缩工具(如 zip)打包整个目录
- 或编写构建脚本自动化该过程
基本上就这些,不复杂但容易忽略细节。










