Composer的archive命令可将项目或包打包为zip或tar文件,用于发布版本或部署。根据composer.json配置生成归档,支持指定包名、版本、格式和输出目录。默认保存至dist目录,可通过archive.exclude配置排除文件,如tests/、*.log等,生成干净的分发包。

Composer 的 archive 命令可以将某个包或项目打包成压缩文件,常用于发布稳定版本、部署项目或创建离线分发包。它不会打包整个项目目录的所有内容,而是根据包的定义(如 composer.json 中的配置)来生成归档文件。
基本语法
composer archive [package] [version] [--format=zip|tar] [--dir=/path/to/save]说明:
- package:要打包的包名,例如 monolog/monolog
- version:指定版本,如 1.26.0 或 dev-main
- --format:指定压缩格式,支持 zip 和 tar,默认为 zip
- --dir:指定输出目录,不指定则输出到当前目录下的 'dist' 文件夹
常见用法示例
1. 打包当前项目
在项目根目录下运行以下命令,会根据 composer.json 中定义的包名和版本打包当前项目:
composer archive --format=zip该命令会生成类似:vendorname/packagename-1.0.0.zip 的文件,默认保存在 dist/ 目录中(若不存在会自动创建)。
2. 打包指定包和版本
composer archive monolog/monolog 2.9.0 --format=tar --dir=./archives这条命令会下载 monolog/monolog 的 2.9.0 版本,并打包成 tar 文件,保存到当前目录的 archives 子目录中。
3. 打包开发分支
composer archive your-vendor/your-project dev-main --format=zip适用于你想打包主分支最新代码用于测试或部署。
注意事项与技巧
确保 composer.json 中有正确的 name 和 version 字段,否则打包可能失败或命名异常。
如果项目使用了 archive 配置(在 composer.json 中),可以自定义打包行为,例如排除某些文件:
{ "name": "my/project", "version": "1.0.0", "archive": { "exclude": [ "/tests", "/docs", "*.log", "!.gitkeep" ] } }上述配置会在执行 archive 命令时自动排除 tests、docs 目录和日志文件。
注意:排除规则使用的是 gitignore 风格语法。
查看打包结果
打包完成后,可在目标目录找到类似:
- my-project-1.0.0.zip
- my-project-1.0.0.tar
解压后即为可直接使用的代码结构,不含 vendor 目录(除非你手动包含),适合分发源码。
基本上就这些。Composer archive 命令简单实用,适合自动化构建流程中生成发布包。只要配置好 composer.json,就能快速打包干净的项目副本。










