在 composer.json 中配置 archive.exclude 可排除指定文件或目录,支持通配符;2. 排除路径以项目根目录为基准,不支持取反语法;3. 执行 composer archive 命令时将按规则生成不含排除文件的压缩包。

使用 composer archive 命令打包项目时,默认会包含所有符合版本控制规则的文件。如果你想排除某些文件或目录,需要通过配置 composer.json 中的 archive 选项来实现。
1. 使用 archive.exclude 配置排除文件
在 composer.json 文件中添加 archive 字段,指定要排除的路径。支持通配符和多种格式:
- 字符串:直接写路径名
- 数组:列出多个排除项
- 支持 * 和 ? 等简单通配符
示例:
{
"name": "your-vendor/your-package",
"archive": {
"exclude": [
"/tests/",
"/docs/",
"/.env",
"*.log",
"var/*",
"node_modules/"
]
}
}
以上配置会排除 tests 目录、docs 目录、.env 文件、所有 .log 文件、var 下的内容以及 node_modules。
2. 排除规则说明
排除路径以项目根目录为基准,常见写法:
- /dir/:排除整个目录
- *.tmp:排除所有 .tmp 结尾的文件
- !important.log:不支持取反(即不能用 ! 包含某个被排除的文件)
注意:Composer 的排除机制不支持像 .gitignore 那样复杂的取反语法,只能做简单排除。
3. 执行归档命令
配置完成后,运行以下命令生成归档包:
composer archive --format=zip --dir=dist
Composer 会自动读取 archive.exclude 规则,并生成不含这些文件的压缩包。
基本上就这些。只要在 composer.json 里正确设置 exclude 列表,就能有效控制打包内容。不复杂但容易忽略的是路径写法,确保以 / 开头或使用通配符匹配准确。










