composer的archive命令可将项目打包为zip或tar文件,用于发布或部署。它依据composer.JSon配置自动排除.gitignore和exclude-from-classmap中的文件,默认按当前版本或Git分支生成压缩包。通过–format指定格式,–dir设置输出目录,还可指定版本如1.0.0或使用dev-main打包开发版本。结合.gitattributes中定义的export-ignore规则,能精确控制归档内容,实现干净、规范的代码发布。

Composer 的 archive 命令可以用来将项目的某个版本打包成压缩文件,比如 zip 或 tar,适合用于发布代码或部署。它不会打包整个项目目录下的所有内容,而是根据 composer.json 中的配置,打包符合规范的源码文件。
基本用法
运行以下命令即可生成当前项目默认分支(通常是 main 或 master)或指定版本的压缩包:
composer archive
默认情况下,这条命令会:
- 使用当前项目目录的
composer.json中定义的版本(version)或从 Git 分支推断 - 打包符合 autoload 规则的源码文件
- 排除在
.gitignore和exclude-from-classmap中列出的文件 - 生成一个 zip 文件(在 windows 上)或 tar 文件(在 unix-like 系统上)
指定格式和版本
你可以通过参数控制打包的格式和版本:
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
composer archive –format=zip –dir=dist/ 1.0.0
说明:
- –format=zip:指定输出格式为 zip(也可用 tar)
- –dir=dist/:指定输出目录,这里会保存到 dist/ 文件夹下
- 1.0.0:指定要打包的版本,必须是 Git tag 或在 composer.json 中定义的版本
执行后会在 dist/ 目录生成类似 my-project-1.0.0.zip 的文件。
打包当前开发状态(非标签版本)
如果你想打包当前工作区的内容,而不是某个 tag,可以使用别名:
composer archive –format=zip dev-main
这会打包当前分支的最新提交,并以 “dev-main” 作为版本名生成压缩包。
自定义打包内容
Composer 的 archive 命令遵循 composer.json 中的设置,特别是:
- exclude-from-classmap:虽然主要用于自动加载,但间接影响哪些 php 文件被关注
- .gitattributes:如果你的项目包含这个文件,可以用它来精确控制哪些文件应被排除在归档之外
例如,在 .gitattributes 中添加:
/tests export-ignore
/build export-ignore
.gitignore export-ignore
这样,使用 composer archive 打包时就会忽略这些文件或目录,就像 git archive 一样。
基本上就这些。只要项目有合理的版本管理和 .gitattributes 配置,composer archive 就能快速生成干净的发布包。


