Satis 不是私有 Packagist,仅生成静态 JSON 和 ZIP 包,不支持实时依赖解析、搜索、Web UI 或用户注册;适合已知包列表、发布节奏稳定、安全要求高、不想运维 PHP 服务的团队。
直接说结论:Satis 不是私有 Packagist,它只生成静态 JSON 和 ZIP 包,不支持实时依赖解析、搜索、Web UI 或用户注册——适合已知包列表、发布节奏稳定、安全要求高、不想运维 PHP 服务的团队。
为什么 Satis 生成的源无法被 composer install 正确识别
常见现象是执行 composer install 报错:Could not find package xxx at any version,或提示 Skipping branch alias ... 后跳过所有包。根本原因是 Satis 默认只导出 dist(ZIP)形式,但未正确配置 require 中的版本约束与 repositories 的 type 匹配。
- 确保
composer.json中私有源 type 必须为"type": "composer",不是package或artifact - Satis 配置中必须显式启用
"archive": {"format": "zip", "skip-dev": true},否则不生成 dist 信息 - 每个私有包的
composer.json必须含"version"字段(tag 推送时可省略,但 Satis 构建时需能推断;建议统一打 Git tag) - 运行
php bin/satis build satis.json web/后,检查生成的web/packages.json是否包含目标包名及有效versions数组
satis.json 关键字段怎么写才不出错
一份易维护、少踩坑的最小可行配置要覆盖来源、归档、过滤和安全性三块: