composer archive命令用于打包PHP项目,生成zip或tar格式的归档文件,默认排除.gitignore中定义的文件及VCS目录;通过指定包名、版本、格式和输出目录可自定义打包行为,支持在composer.json中配置exclude规则以忽略特定路径,常用于发布版本或部署项目。

Composer 提供了 archive 命令,可以将一个已安装的包或当前项目打包成压缩文件(如 tar 或 zip),常用于发布稳定版本、备份代码或部署项目。下面详细讲解如何使用 composer archive 命令来打包 PHP 项目。
什么是 composer archive 命令?
composer archive 是 Composer 自带的一个命令,用于将指定的包或当前项目打包为归档文件。默认情况下,它会根据项目的 composer.json 配置生成一个压缩包,包含符合规范的源码文件。
该命令不会打包被 .gitignore 忽略的文件,也不会包含 VCS 目录(如 .git),确保打包内容干净。
基本语法与参数说明
命令格式:
立即学习“PHP免费学习笔记(深入)”;
composer archive [package] [version] [format] [dir]常用参数说明:
- [package]:要打包的包名(可选)。如果不指定,默认打包当前项目。
- [version]:指定版本(如 dev-main、v1.0.0)。若省略,使用当前项目配置的版本或最新稳定版。
- [format]:输出格式,支持 zip 或 tar,默认为 zip。
- [dir]:指定输出目录,不填则输出到当前目录。
打包当前项目示例
进入你的 PHP 项目根目录(必须包含 composer.json 文件),执行以下命令:
composer archive这会生成一个类似 projectname-1.0.0.zip 的文件(名称和版本取自 composer.json)。
如果你想打包成 tar 格式并输出到 dist 目录:
composer archive zip 1.0.0 dist/如果项目版本是 dev 分支,也可以显式指定:
composer archive . dev-main zip注意事项与常见问题
- 打包内容受 composer.json 中的
archive配置影响。可通过添加"archive": {"exclude": ["tests/", "*.md"]}来排除特定文件。 - 确保项目已正确设置版本号(version 字段),否则可能生成 dev 包。
- 如果你的项目依赖其他私有包,archive 不会包含这些依赖,仅打包当前项目本身。
- 命令只能打包已“安装”或本地存在的包,远程包需先 require 过才可归档。
扩展:自定义打包行为
你可以在 composer.json 中增加 archive 配置,控制哪些文件不被打包:
"extra": {
"branch-alias": {
"dev-main": "1.0.x-dev"
}
},
"archive": {
"exclude": [
"/tests",
"/docs",
"/*.log",
"/vendor/"
]
}
这样,执行 archive 命令时会自动忽略列出的路径。
基本上就这些。composer archive 是一个轻量但实用的功能,适合快速导出项目快照,无需手动整理文件。只要项目结构清晰、composer.json 配置完整,打包过程非常简单。











