packagist 不接受 zip 等二进制包,仅索引公开 git 仓库的 https url;需确保仓库公开、composer.json 在根目录、type 为合法值(如 library)、psr-4 自动加载配置正确,并打 git tag 才能正常发布。

Composer 没有“动画压缩包”这个概念,也不存在上传 ZIP 包到 Packagist 的流程——你试图上传的文件,Packagist 会直接拒绝。
Packagist 根本不收 zip 或任何二进制包
Packagist 不是文件托管平台,它只索引公开 Git 仓库(GitHub / GitLab / Bitbucket)的 HTTPS URL。提交 ZIP、TGZ、7z 或本地路径,页面会立刻报错:Repository not found 或 Invalid repository URL。
- 仓库必须公开可访问,且
composer.json在根目录 - URL 必须是标准 HTTPS 地址,如
https://github.com/myname/my-package,不能是git@github.com:...或带用户 token 的链接 - 私有仓库、内网 Git、未初始化的空库、拼错的用户名/仓库名,全部失败
composer.json 里写 "type": "animation" 也没用
Composer 官方认可的 type 字段值中没有 animation;Packagist 也不会识别或特殊处理它。常见合法值只有:library、project、metapackage、composer-plugin 等。
-
"type": "library"是绝大多数开源包的正确选择,也是 Packagist 收录的前提之一 - 写错 type(比如留空、写成
anim、gif-tool)可能导致包被标记为 “not installable” 或无法出现在搜索结果中 - Packagist 页面不会提示 type 错误,只会在后台静默过滤
所谓“动画功能”得靠代码实现,不是靠打包方式
如果你的包实际提供 GIF 处理、帧序列生成、CSS 动画工具类等功能,这些能力必须通过 PHP 类暴露,并由 PSR-4 自动加载规则正确映射——和“动画”这个词本身无关。
- 确保
autoload.psr-4配置末尾有反斜杠:"MyPackageAnimation": "src/Animation/"✅,少一个就导致Class not found - 类文件路径要严格匹配命名空间,例如
src/Animation/GifOptimizer.php必须声明namespace MyPackageAnimation; - 发布前本地验证:运行
composer dump-autoload -o,再php -r "var_dump(class_exists('MyPackage\Animation\GifOptimizer'));"
最容易被忽略的是:Packagist 抓取的是 Git tag 对应的快照,不是你当前分支的 HEAD。哪怕 composer.json 和自动加载全对,没打 v1.0.0 并 git push origin v1.0.0,别人就只能 require "myname/my-package": "dev-main"——这等于放弃版本控制和语义化发布。











