创建并发布首个Composer包需四步:1.规范命名(vendor/name)并建Git项目;2.编写代码与composer.json(含PSR-4自动加载);3.推送至公开GitHub仓库;4.在Packagist提交仓库并配置Webhook,打tag发布稳定版。

创建并发布自己的第一个 Composer 包并不难,关键在于理解 Composer 的包机制、规范命名、正确配置 composer.json,以及选择合适的代码托管和注册平台。下面是一步一步的实操指南,从初始化项目到在 Packagist 上公开可用。
1. 准备工作:命名、目录与基础结构
Composer 包本质是一个符合特定规则的 PHP 项目。你需要一个唯一的包名(格式为 vendor/name),例如 myname/my-first-package。建议使用 GitHub 账号作为 vendor 名,确保唯一性且便于后续维护。
新建空目录,例如 my-first-package,进入后初始化 Git:
mkdir my-first-package && cd my-first-package
git init
推荐基本目录结构如下(非强制,但利于扩展):
-
src/—— 存放主类文件(如src/Hello.php) -
tests/—— 单元测试(可选,但强烈建议) -
composer.json—— 包的核心配置文件(必须) -
README.md—— 使用说明(用户第一眼看到的内容)
2. 编写代码并配置 composer.json
在 src/Hello.php 中写一个简单类:
namespace MyName\MyFirstPackage;
class Hello
{
public static function say(): string
{
return 'Hello from my first Composer package!';
}
}
然后生成标准 composer.json(可用 composer init 交互式创建,或手动编写):
{
"name": "myname/my-first-package",
"description": "A simple demo package for learning Composer publishing",
"type": "library",
"autoload": {
"psr-4": {
"MyName\\MyFirstPackage\\": "src/"
}
},
"require": {},
"authors": [
{
"name": "Your Name",
"email": "you@example.com"
}
],
"minimum-stability": "stable",
"license": "MIT"
}
注意:autoload 部分必须准确映射命名空间到路径,否则安装后无法自动加载类。
3. 提交代码到 GitHub(或其他 Git 托管平台)
Composer 本身不托管代码,它只从 Git 仓库拉取。因此你需要把代码推送到公开仓库:
- 在 GitHub 创建同名仓库(如
myname/my-first-package) - 本地执行:
git add . && git commit -m "init: basic package structure" - 关联远程:
git remote add origin https://github.com/myname/my-first-package.git - 推送:
git push -u origin main(注意分支名是否为main或master)
确保仓库是公开的,否则 Packagist 无法抓取。
4. 在 Packagist 上提交并自动同步
Packagist 是 Composer 默认的包索引平台。访问 https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19,用 GitHub 账号登录。
点击右上角 “Submit” → 粘贴你的 GitHub 仓库地址(如 https://github.com/myname/my-first-package)→ Submit。
成功后 Packagist 会立即抓取 composer.json 并显示包页面。你还可以在 GitHub 仓库中启用 Packagist 的 Webhook,实现每次 push 后自动更新版本(在 GitHub Settings → Webhooks 中添加 https://www.php.cn/link/ec811d0d775adc62776ba80fadd4ed19/api/github)。
默认会抓取 main 分支作为 dev-main 版本。若要发布稳定版,打 Git tag:
git tag v1.0.0
git push --tags
Packagist 识别到 tag 后,会自动生成对应版本(如 1.0.0),用户就能用 composer require myname/my-first-package:^1.0 安装了。










