需手动提交仓库url至packagist并确保composer.json含合法name、type、autoload字段,打语义化git tag(如v1.0.0),且每次更新后须在packagist后台点击“update”同步。

怎么让 Packagist 认出你的包
Packagist 不会自动扫描 GitHub,必须手动触发收录。最直接的方式是登录 Packagist 账号后点击 “Submit”,填入你的仓库 URL(比如 https://github.com/yourname/your-package)。它会立刻抓取 composer.json 并校验基础字段。
常见错误现象:Package not found 或提交后显示 Invalid package information,基本都是因为 composer.json 缺少 name、type 或 autoload 字段;name 格式不对(如含大写字母、下划线)也会被拒。
实操建议:
-
name必须是vendor/package小写格式,比如myorg/http-client,不能是MyOrg/HttpClient -
type建议设为library(除非你做的是插件或应用模板) - 确保远程仓库公开可读,私有库不会被 Packagist 抓取
- 首次提交前,先用
composer validate本地检查composer.json
版本打标必须用 Git tag,且格式要对
Packagist 依赖 Git tag 解析版本号,dev-main 或 dev-master 是开发分支别名,不是正式版本;用户 require 时默认拉最新 stable 版,没 tag 就什么也装不到。
常见错误现象:执行 composer require yourname/your-package 报错 Could not find package ...,或者只看到 dev-main 可选,没有 1.0.0 这类版本。
实操建议:
- 打 tag 必须用语义化版本,如
v1.0.0、v2.1.3,前面带v是惯例(Packagist 默认识别,不带可能被忽略) - tag 要 push 到远程:
git tag v1.0.0 && git push origin v1.0.0 - tag 对应的 commit 必须包含合法的
composer.json(尤其是version字段可留空,Packagist 以 tag 名为准) - 修改已发布 tag 的内容?别试——Git tag 不可变,删了重打再 push 也不会刷新 Packagist,得去它的后台手动 “Update”
autoload 配置错,用户一 require 就 Class not found
Composer 加载类全靠 autoload 段落,这里写错,你的包哪怕成功 install,也根本跑不起来。
旅游网站管理系统是由深山工作室自主研发而成,具有以下相应的功能.1. 旅游新闻发布,站内新闻发布2. 发布旅游线路详细信息.包括:线路名称、线路类型、线路报价、游完整条线路所需时间、线路说明、线路途经景点、行程安排及其它备注。3. 旅游景点介绍推广4. 旅行社加盟介绍系统.包括:各个旅行社可以发布自己的旅游线路.管理留言,发布信息(vip,会员)5. 酒店宾馆加盟介绍系统,酒店宾馆发布客房信息(v
常见错误现象:Class 'YourVendorYourClass' not found,但文件明明存在、命名空间也对;或者 composer dump-autoload -o 后仍无效。
实操建议:
- 优先用
psr-4,路径映射要精确到命名空间根,比如"MyVendor\": "src/"表示MyVendorFooBar对应src/Foo/Bar.php - 别漏掉末尾反斜杠:
"MyVendor\"不等于"MyVendor"(后者在 Windows 下可能解析异常) - 如果用了
files类型加载函数文件,确保路径是相对于composer.json的,比如"files": ["src/helpers.php"] - 发布前在测试项目里跑一遍:
composer require yourname/your-package:dev-main→ 再php -r "new YourVendorSomeClass();"
私有包或预发布版本怎么控制可见性
Packagist 公开索引所有提交的包,没法隐藏。所谓“私有”,只能靠绕过 Packagist:用 repositories 手动声明源,或搭私有 Satis/SatisPress。
常见错误现象:误以为打 dev- 前缀就能限制访问,结果别人 composer require yourname/your-package:dev-feature/x 一样能装;或者把 minimum-stability 设成 dev 导致整个项目依赖混乱。
实操建议:
- 预发布用
beta、rc等 stability flag,比如"version": "1.0.0-beta1",并在composer.json里加"stability": "beta" - 真要私有,就别提交到 Packagist,在用户项目的
composer.json里加repositories:{"type": "vcs", "url": "https://github.com/yourname/private-package"} - 避免在
composer.json中写死minimum-stability,它会影响整个项目,应由使用者控制
最常被跳过的一步:改完 composer.json 或打完 tag 后,没去 Packagist 页面点 “Update” —— 它不会自动轮询,尤其 tag 更新后必须手动触发同步,否则用户看到的还是旧信息。









