创建自己的 Composer 组件核心三步:composer init 生成合法 composer.json(name 必须为 vendor/name 格式)、手动配置 PSR-4 autoload 映射(如 "MyVendor\MyPackage\": "src/")并运行 composer dump-autoload、打 v 开头的 Git 标签后提交至 Packagist。

直接说结论:创建自己的 Composer 组件,核心就三步——composer init 生成合法 composer.json、手动补全 PSR-4 自动加载配置、打 Git 标签后提交到 Packagist。镜像源切换只是加速安装环节,和“创建组件”本身无关,别在初始化阶段折腾它。
composer init 只生成 JSON,不配 autoload 也不建目录
很多人跑完 composer init 就以为项目 ready,结果写完类却 Class not found。这是因为 init 只生成一个空壳 composer.json,连 src/ 目录都不创建,更不会自动写 "autoload" 字段。
- 交互中选 “Add PSR-4 autoload mapping?” 时,它只支持
classmap,**不支持 PSR-4**;想用命名空间必须手动编辑composer.json -
"autoload": {"psr-4": {"MyVendor\MyPackage\": "src/"}}中的命名空间末尾反斜杠是双反斜杠(\),写成单个\或漏掉都会失效 - 路径必须是相对项目根目录的,
"src/"对,./src/或src(无斜杠)都不认 - 改完
composer.json后必须运行composer dump-autoload,composer install不会触发 autoload 重建
包名必须是 vendor/name 格式,否则 Packagist 拒绝收录
初始化时填的 Package name 看似随便,实则决定你能否发布成功。Packagist 强制校验格式,my-awesome-package 或 awesome-utils 这类没带 / 的名字会被直接拦截。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 个人推荐用
yourgithubname/package-name,比如janedoe/http-client - 组织账号也一样,
acmecorp/logger是合法的,logger不是 -
composer validate要在提交前跑一次,它会立刻报出name缺少 vendor 段这类硬性错误 - 如果只是本地测试,不用发 Packagist,可以用
repositories配置路径型依赖:{"type": "path", "url": "../my-local-package"}
发布前必须打 Git tag,且 tag 名要带 v 前缀
Packagist 不拉分支,只认 Git tag。你 push 了代码但没打 tag,它就看不到新版本;打了 1.0.0 却没加 v,它会当无效版本忽略。
- 标准命令是:
git tag v1.0.0 && git push --tags - Tag 必须指向含完整
composer.json和src/的 commit,不能是空提交或只有 README 的提交 - Packagist 启用 GitHub webhook 后,push tag 会自动同步;若未启用,需手动点 “Update” 按钮
- 首次提交后,用户才能执行
composer require yourname/your-package;没 tag 就算仓库公开也没用
最容易被忽略的是 autoload 配置和 Git tag 的耦合关系:autoload 写错,本地都跑不起来;tag 打错,别人根本装不上。这两处一错,整个发布流程就卡死在中间,既不是环境问题,也不是网络问题,而是结构定义本身没对齐。

















