创建并发布 Composer 包到 Packagist 的核心步骤是:写好包代码、配置 composer.json、关联 GitHub 仓库、提交到 Packagist;需确保 PSR-4 自动加载正确、语义化版本标签(如 v1.0.0)已打标并推送,且 vendor 名与 Packagist 账号一致。

创建并发布自己的 Composer 包到 Packagist,核心是三步:写好包代码 + 配置 composer.json + 关联 GitHub 仓库 + 提交到 Packagist。只要结构规范、自动加载正确、版本打标清晰,整个过程不到 10 分钟。
准备一个符合规范的 PHP 包目录结构
你的包不需要复杂框架,一个干净的命名空间 + 可自动加载的类即可。推荐标准结构:
- 根目录下放
src/(放所有 PHP 类),tests/(可选),composer.json - 类文件按 PSR-4 命名,例如
src/YourName/PackageName/Helper.php对应命名空间YourName\PackageName - 确保
composer.json中"autoload"正确声明 PSR-4 映射,比如:"autoload": { "psr-4": { "YourName\\PackageName\\": "src/" } }
编写最小可用的 composer.json
这是 Packagist 识别和安装你的包的关键文件。必须包含以下字段:
"name":格式为vendor/name,如yourname/laravel-helper(vendor 名需与 Packagist 账号或 GitHub 用户名一致)"description":一句话说明用途,Packagist 会展示"type":建议填library(普通库)或laravel-package(Laravel 扩展)"autoload":如上所述,PSR-4 映射必须准确"require":列出运行时依赖(如"php": "^8.0"),没有就留空对象{}
示例精简版:
{
"name": "yourname/simple-log",
"description": "A lightweight log helper for CLI scripts",
"type": "library",
"autoload": { "psr-4": { "YourName\\SimpleLog\\": "src/" } },
"require": { "php": "^8.0" }
}
推送到 GitHub 并打第一个语义化版本标签
Packagist 不抓取分支,只认 Git 标签(tag)。所以:
- 把代码推到 GitHub 公共仓库(如
https://github.com/yourname/simple-log) - 本地执行:
git tag -a v1.0.0 -m "First stable release"git push origin v1.0.0 - 标签必须是合法语义化版本(
v1.0.0、v2.1.3),不能是1.0或master
提交到 Packagist 并启用自动更新
登录 packagist.org,点击右上角 “Submit”:
- 粘贴你的 GitHub 仓库 URL(如
https://github.com/yourname/simple-log) - 点击 “Check”,Packagist 会拉取
composer.json并校验格式 - 校验通过后点 “Submit”,包立即上线,URL 类似
https://www.php.cn/link/5d2e892c81e5fafc51ab0973879563a0packages/yourname/simple-log - 进入包页面 → “Manage” → “GitHub Service Hook”,勾选 “Enable auto update”,这样每次你 push 新 tag,Packagist 会自动同步
完成后,别人就能直接 composer require yourname/simple-log 安装了。基本上就这些 —— 不复杂但容易忽略 tag 和 autoload 配置。










