archive-exclude 是 composer.json 根级字段,用于在 composer archive 或 packagist 抓取时排除指定路径,仅生效于归档阶段,不支持 通配符,仅支持 * 和字面路径,且必须置于顶层。
composer.json 里用 archive-exclude 控制 zip/tar 归档内容
Composer 在执行 composer archive 或打包发布(如 GitHub Release、Packagist 自动抓取)时,会默认把整个项目目录打成压缩包。但你通常不希望把 tests/、vendor/、.git/ 或本地配置文件一起塞进去。archive-exclude 就是干这个的——它只在归档阶段生效,不影响 install 或 autoload。
-
archive-exclude是composer.json根级字段,值必须是字符串数组 - 路径匹配基于项目根目录,不支持通配符(
*),但支持**表示任意层级(例如**/Tests/) - 匹配的是路径前缀,不是 glob;所以
"tests"会排除tests/和mytests/,而"tests/"(带斜杠)才精准排除目录 - 不能排除
composer.json自身或vendor/目录(Composer 强制保留它们用于校验和依赖解析)
常见错误:忽略规则不生效?检查这几点
最常遇到“写了没用”,基本是下面几个原因: