如何创建并发布你自己的第一个composer包到Packagist?
发布时间 - 2025-11-06 00:00:00 点击率:次创建PHP包需组织代码并编写composer.json;2. 将项目推送到GitHub并打标签;3. 提交仓库地址到Packagist,他人即可通过composer require安装使用。
创建并发布自己的 Composer 包其实并不复杂,只要掌握基本流程。你只需要写一段可复用的 PHP 代码,打包成符合 Composer 规范的结构,然后提交到 Packagist,其他人就能通过 composer require 安装使用。
准备你的 PHP 包
一个 Composer 包本质上是一个带有 composer.json 文件的 PHP 项目。你需要先组织好代码结构。
假设你要创建一个叫 my-first-package 的工具包,用于处理字符串反转:
- 创建项目目录:
mkdir my-first-package && cd my-first-package - 初始化目录结构:
my-first-package/ ├── src/ │ └── StringHelper.php ├── composer.json └── README.md - 在
src/StringHelper.php中写个简单类:
配置 composer.json
这是最关键的文件,它告诉 Composer 包名、依赖、自动加载方式等信息。
运行 composer init 并按提示填写,或手动创建 composer.json:
{
"name": "your-vendor/my-first-packa
ge",
"description": "A simple package to reverse strings",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "you@example.com"
}
],
"require": {
"php": "^7.4 || ^8.0"
},
"autoload": {
"psr-4": {
"MyName\\MyFirstPackage\\": "src/"
}
},
"minimum-stability": "stable",
"prefer-stable": true
}
注意:
-
name格式为vendor/package-name,vendor 通常是你的 GitHub 用户名或团队名。 -
autoload.psr-4配置确保 Composer 能正确加载你的类。
推送到 GitHub(或其他 Git 平台)
Packagist 会从你的 Git 仓库拉取代码,所以需要先把项目托管出去。
- 初始化 Git:
git init - 添加并提交文件:
git add . && git commit -m "Initial commit" - 创建 GitHub 仓库(比如叫
my-first-package) - 关联远程并推送:
git remote add origin https://github.com/your-vendor/my-first-package.git git branch -M main git push -u origin main - 打一个版本标签(Packagist 推荐):
git tag v1.0.0 git push origin v1.0.0
提交到 Packagist
现在去 Packagist 让全世界发现你的包。
- 访问 https://www./link/ec811d0d775adc62776ba80fadd4ed19 并注册账号
- 登录后点击右上角“Submit”
- 粘贴你的 GitHub 仓库地址(如
https://github.com/your-vendor/my-first-package) - 点击“Check” → “Submit”
提交后,Packagist 会抓取你的 composer.json 信息并展示包页面。别人就可以使用:
composer require your-vendor/my-first-package
每次你推送新标签(如 v1.1.0),Packagist 通常会自动更新(需启用 GitHub Webhook)。你也可以手动刷新页面上的“Update”按钮。
基本上就这些。不复杂但容易忽略细节,比如命名空间、PSR-4 路径、Git 标签。只要这几步走通,你就正式发布了第一个 Composer 包。
# php
# js
# git
# json
# composer
# github
# 工具
# ai
# 命名空间
# require
# 字符串
# 并发
# https
# 自己的
# 是一个
# 这是
# 第一个
# 你就
# 就能
# 你要
# 工具包
# 或其他
# 几步
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
Laravel如何生成API文档?(Swagger/OpenAPI教程)
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在橙子建站上传落地页?操作指南详解
个人摄影网站制作流程,摄影爱好者都去什么网站?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何用低价快速搭建高质量网站?
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Linux系统运维自动化项目教程_Ansible批量管理实战
如何基于PHP生成高效IDC网络公司建站源码?
详解CentOS6.5 安装 MySQL5.1.71的方法
图册素材网站设计制作软件,图册的导出方式有几种?
如何用花生壳三步快速搭建专属网站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
长沙做网站要多少钱,长沙国安网络怎么样?
如何选择PHP开源工具快速搭建网站?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
Firefox Developer Edition开发者版本入口
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Swift开发中switch语句值绑定模式
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
个人网站制作流程图片大全,个人网站如何注销?
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何在阿里云虚拟服务器快速搭建网站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
javascript如何操作浏览器历史记录_怎样实现无刷新导航
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
三星、SK海力士获美批准:可向中国出口芯片制造设备
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
如何在 React 中条件性地遍历数组并渲染元素
动图在线制作网站有哪些,滑动动图图集怎么做?
详解Android中Activity的四大启动模式实验简述
Laravel模型事件有哪些_Laravel Model Event生命周期详解
什么是javascript作用域_全局和局部作用域有什么区别?
开心动漫网站制作软件下载,十分开心动画为何停播?


ge",
"description": "A simple package to reverse strings",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Your Name",
"email": "you@example.com"
}
],
"require": {
"php": "^7.4 || ^8.0"
},
"autoload": {
"psr-4": {
"MyName\\MyFirstPackage\\": "src/"
}
},
"minimum-stability": "stable",
"prefer-stable": true
}