Composer 的 archive 命令可快速将 PHP 项目打包为 tar 或 zip 文件,便于分发部署;默认读取 composer.json 生成如 my-project-1.0.0.tar 的文件,不包含 vendor 目录;通过 --format=zip --dir=dist/ 可指定格式和输出路径;使用 --with-dependencies 可包含依赖,适合离线部署;支持对指定包如 vendor/package-name 打包;通过 .gitattributes 中的 export-ignore 规则可排除 tests、配置文件等;合理配置版本号与 .gitattributes,结合参数可高效生成轻量部署包。

Composer 的 archive 命令可以快速将你的 PHP 项目打包成压缩文件,方便分发或部署。它不仅能打包项目源码,还能结合 Composer 配置控制打包内容,比如是否包含依赖、排除特定目录等。
基本用法:打包当前项目
在项目根目录下运行以下命令:
composer archive默认情况下,该命令会:
- 读取当前项目的 composer.json
- 使用项目名称和版本号生成文件名(如 my-project-1.0.0.tar)
- 打包当前项目中所有符合规则的文件
- 不包含 vendor/ 目录中的依赖(除非特别配置)
指定格式和目标目录
你可以自定义打包格式和输出位置:
立即学习“PHP免费学习笔记(深入)”;
composer archive --format=zip --dir=dist/这会生成一个 zip 文件,并保存到 dist/ 目录下。支持的格式有 tar 和 zip。
包含依赖库(vendor)
如果你希望打包时包含所有已安装的依赖:
composer archive --with-dependencies这个选项会把 vendor/ 中的依赖也加入压缩包,适合需要离线运行的部署场景。
配合 version 使用,打包指定版本
你也可以对已安装的某个包进行归档:
composer archive vendor/package-name --format=zip前提是该包已经通过 Composer 安装到项目中。
排除文件:利用 .gitattributes 控制内容
Composer 的 archive 命令会识别项目中的 .gitattributes 文件。如果某行包含 export-ignore,对应文件将不会被打包。
例如,在 .gitattributes 中添加:
/tests export-ignore.php_cs.dist export-ignore
这样测试目录和配置文件就不会出现在最终的压缩包里。
基本上就这些。合理使用 composer archive,可以让你快速生成干净、轻量、可部署的项目包,无需额外脚本。关键是配置好版本号和 .gitattributes,再根据是否需要依赖选择参数。











