composer archive 是 Composer 提供的打包命令,用于将项目按版本或分支生成 zip 或 tar 归档文件,默认排除 .git 和 vendor 目录,并遵循 .gitattributes 中的 export-ignore 规则,支持指定输出格式、目录及特定版本打包,适用于发布稳定版或部署分发。

当你需要将一个 Composer 项目打包分发或部署时,composer archive 命令能帮你快速生成项目归档文件。它会根据当前项目的版本或指定的标签,把代码打包成 zip 或 tar 格式,方便分享或部署。
composer archive 是什么?
composer archive 是 Composer 内置的一个命令,用于将当前项目打包成压缩文件。默认情况下,它会读取 composer.json 中的版本号(version),并基于该版本创建一个归档包,同时排除 .git 目录和 vendor 目录中的开发依赖(除非特别指定)。
这个命令适合在发布稳定版本、构建部署包或制作插件分发包时使用。
基本用法:快速打包当前项目
进入你的项目根目录(即有 composer.json 的目录),运行以下命令:
- composer archive — 使用 composer.json 中定义的 version 打包,默认格式为 zip
- composer archive –format=tar — 打包为 tar 格式
- composer archive –dir=dist/ — 指定输出目录,比如保存到 dist/ 文件夹
例如:
composer archive --format=zip --dir=build/
这会生成类似 projectname-1.0.0.zip 的文件,并保存在 build/ 目录下。
指定版本或分支打包
如果你希望打包某个特定版本或分支,可以加上 version 参数:
注意:指定的版本必须能在当前项目中解析到,通常适用于有明确版本标签的项目。
排除文件与自定义打包行为
Composer 会自动遵循 .gitattributes 文件中的 export-ignore 规则来决定哪些文件不被打包。你可以在 .gitattributes 中添加:
/tests export-ignore /docs export-ignore *.md export-ignore
这样打包时就会忽略 tests、docs 和所有 .md 文件。
如果没有 .gitattributes,Composer 默认只排除 .git 目录。
确保你在打包前配置好这个文件,避免把开发文档或测试代码包含进去。
基本上就这些。合理使用 composer archive 能让你的发布流程更高效,尤其是配合 CI/CD 脚本时非常实用。不复杂但容易忽略细节。


